Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
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: 16215
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
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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 POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Gemini 4 è quasi pronto: il lanci...
GTA 6, Rockstar lancia il box da collezi...
Microsoft è il caso 'Microslop': cosa si...
Dreame H15 Pro Heat crolla da 599€ a 419...
BYD prepara una berlina elettrica ultra-...
Claude si ottimizza da solo, e adesso è ...
Internet a casa: quanta velocità ...
Titan Quest 2 ha una data di uscita uffi...
Sony ULT FIELD 1, cassa bluetooth in off...
Noctua e Forced Physics insieme per rivo...
Diesel Euro 5, slitta al 2027 il blocco ...
Copilot+ PC è morto? I nuovi Surf...
Nintendo vince causa da 4,5 milioni di d...
Google porta l'AI nello spazio: il primo...
Opera: la VPN gratuita si accende in aut...
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: 08:21.


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