Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Marathon: arriva il Fortnite hardcore
Marathon: arriva il Fortnite hardcore
Marathon è il titolo multiplayer competitivo del momento. Ecco quali sono le caratteristiche di gioco principali, insieme alle nostre prime considerazioni dopo qualche "run" nell'extraction shooter di Bungie
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-09-2007, 15:28   #1
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
[C] Dichiaro float ma assegno un numero reale..

E' un grave errore vero? Mi spiego nel programma che avevo da fare all'esame dovevo leggere un file contentente numeri reali, nella tensione ho fatto confusione ed ho assegnato ad una variabile float il numero reale letto da quel file. Come valuteranno la cosa??
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 15:38   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
C'è qualcosa che non mi torna...un float è la rappresentazione di un numero reale...cosa c'è che non va ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 15:47   #3
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Se per leggere il numero dal file hai usato fscanf(filepunt,"%f",&var) con var di tipo float, non dovrebbero esserci problemi, perché ci pensa fscanf a convertire la stringa di caratteri che rappresenta il numero, in un valore float da assegnare alla variabile.

Se però hai usato quella sintassi e var era double, allora probabilmente immagazzinerai un valore sbagliato, perché il formattatore corretto per i double è %lf e non %f, e fscanf non reinterpreta automaticamente i puntatori a float come puntatori a double.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu

Ultima modifica di Ziosilvio : 12-09-2007 alle 15:50.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 15:53   #4
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
Quote:
Originariamente inviato da cionci Guarda i messaggi
C'è qualcosa che non mi torna...un float è la rappresentazione di un numero reale...cosa c'è che non va ?
Scusa hai ragione, pensavo di aver sbagliato invece ho fatto giusto, ne approfitto per chiederti: come si fa (in c) per vedere se un numero reale scelto a caso è divisibile per 5?
Codice:
if numreale%5==0
può andare?
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 15:57   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da piumone Guarda i messaggi
Codice:
if numreale%5==0
può andare?
No, l'operatore % è utilizzabile solo con operandi di tipo intero.

Comunque te la cavi usando la funzione standard fmod().
http://cppreference.com/stdmath/fmod.html
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 15:58   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
No...quello si fa con la divisione intera.
Per il reale in teoria non lo potresti fare...ogni reale è divisibile per qualunque numero reale o intero (escluso 0).
Sicuro che non dovevi leggere un numero intero ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 15:59   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da andbin Guarda i messaggi
Comunque te la cavi usando la funzione standard fmod().
Però fare un fmod e poi controllare se il resto è uguale a 0 è un bel rischio
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 16:01   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da cionci Guarda i messaggi
Però fare un fmod e poi controllare se il resto è uguale a 0 è un bel rischio
Perché?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 16:16   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da andbin Guarda i messaggi
Perché?
Perché ci sono i limiti di rappresentabilità...non tutti gli interi all'interno dell'intervallo di rappresentabilità sono rappresentabili su un double, ancor più su un float.

Ad esempio:
Codice:
#include <stdio.h>
#include <math.h>

int main()
{
  float f = 21141235;

  printf("%f\n", f);

  if(fmodf(f,5.0) == 0)
    printf("multiplo di 5\n");

  printf("%f\n", fmodf(f,5.0));

  return 0; 
}
Ora questo è un errore di rappresentazione macroscopico, ma possono essere anche più bassi, dopo diverse operazioni sui floating point.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 16:21   #10
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
Quindi per vedere se un reale è divisibile per 5 devo fare per forza l'fmod? visto che nei reali ci sono anche gli interi nel caso avessi letto per dire 25 il comando %5 sarebbe stato lecito oppure no? Mi sa di no eh.. :-(
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 16:23   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Avresti dovuto fare:

if((int)f % 5 == 0)

ma in ogni caso se avessi letto 25.1111 ti avrebbe dato comunque 0...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 16:28   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da cionci Guarda i messaggi
Perché ci sono i limiti di rappresentabilità...non tutti gli interi all'interno dell'intervallo di rappresentabilità sono rappresentabili su un double, ancor più su un float.
Sì lo so, un float ha una precisione di circa 7 digit e un double di circa 16 digit.
Se ragioniamo su questi casi al limite della precisione, il problema indubbiamente c'è, sono d'accordo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2007, 16:39   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da andbin Guarda i messaggi
Se ragioniamo su questi casi al limite della precisione, il problema indubbiamente c'è, sono d'accordo.
Però ci può essere non solo in questi casi macroscopici...ma anche dovuti all'accumulo di errori di rappresentabilità su operazioni successive. Se mi metto a fare una lunga serie di operazioni e poi alla fine arrivo ad un risultato che so dovrebbe essere multiplo di 5, è abbastanza probabile che non lo sia
Basta trovarsi per la strada un numero reale non rappresentabile...

Anzi...con i float la lista di operazioni non deve essere nemmeno tanto lunga,

Codice:
#include <stdio.h>
#include <math.h>

int main()
{
  float f = 155.0;

  f += 662.23;
  f -= 662.23;

  printf("%f\n", f);

  if(fmodf(f,5.0) == 0)
    printf("multiplo di 5\n");

  printf("%f\n", fmodf(f,5.0));

  return 0; 
}
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Panasonic LUMIX TZ300: la nuova compatta...
La società aerospaziale italiana ...
Il Politecnico di Milano guiderà ...
Amazon Leo punta ad aumentare la cadenza...
Pro Type Ergo: Razer si lancia a gamba t...
Artemis II: dal guasto risolto alla toil...
Le immagini e i video più spettac...
Previsioni drastiche di TrendForce: la D...
La PS6 portatile sarà più potente della ...
Toshiba annuncia i primi dischi FC-MAMR ...
Amazon Leo offrirà l'accesso a Internet ...
Alienware presenta i nuovi desktop Area-...
Fiat 600 benzina senza ibrido: 101 CV, c...
DJI Mini 4K Combo a 269€ o DJI Neo da 14...
Addio agli sprechi nel riciclo: il Fraun...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:06.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v