Torna indietro   Hardware Upgrade Forum > Software > Programmazione

TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
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
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 developerSCJP 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 developerSCJP 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 developerSCJP 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


TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
La batteria allo stato solido di Honda s...
Google a ricercatore di sicurezza: 'Bel ...
MapTap vi farà impazzire: è...
7Artisans Dream Cine Lens: tre ottiche T...
Torna l'e-bike Engwe più economic...
OnePlus aggiorna la gamma con un nuovo t...
Samsung nel caos: dipendenti in nero pro...
Lexar da 2TB PCIe 4.0 in offerta Amazon ...
Samsung Odyssey G5 in offerta Amazon: mo...
HONOR 600 Smart 5G è ufficiale: u...
AMD Threadripper fino al 215% più...
Strano bug su Google Pixel: la tastiera ...
Google inaugura Dataland: apre al pubbli...
Minaccia cripto: il malware si diffonde ...
iPhone XS, XS Max, XR e iPhone 11 hanno ...
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: 14:10.


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