69 messaggi dal 29 luglio 2004
www.pentalab.it
Non ho provato con C#, ma è sufficente ciò che mi è successo con VB.NET

questo è il codice banale che ho scritto:

Dim s As Single = 360
Dim s2 As Single = 1.2
Dim r As Single = s * s2

360*1,2 fa 432 .....

MA IN "r" VIENE RESTITUITO IL VALORE: 432.000031

CHI MI SA SPIEGARE IL PERCHE' ????
In realtà non sbaglia, ma è la rappresentazione del numero il problema.
Tratto da MSDN:
Remember that a floating-point number can only approximate a decimal number, and that the precision of a floating-point number determines how accurately that number approximates a decimal number. By default, a Single value contains only 7 decimal digits of precision, although a maximum of 9 digits is maintained internally. The precision of a floating-point number has several consequences:

Two floating-point numbers that appear equal for a particular precision might not compare equal because their least significant digits are different.

A mathematical or comparison operation that uses a floating-point number might not yield the same result if a decimal number is used because the floating-point number might not exactly approximate the decimal number.

A value might not roundtrip if a floating-point number is involved. A value is said to roundtrip if an operation converts an original floating-point number to another form, an inverse operation transforms the converted form back to a floating-point number, and the final floating-point number is equal to the original floating-point number. The roundtrip might fail because one or more least significant digits are lost or changed in a conversion.

Ciao

Il mio blog
Homepage
69 messaggi dal 29 luglio 2004
www.pentalab.it
si ma è assurdo che con 2 numeri così "semplici" vada in errore!!
E che tipo di dato devo usare?!?!? anche un double è floating-point!!

AIUTOOOOOOOOOOOOOOOOOOO!!!!!1
cosa c'è che non capisci nella risposta che ti è stata data? è così che fa le operazioni, se non ti sta bene, implementa controlli e/o funzioni di arrotondamento.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.