Ho questo codice;Variabile che agisce in modo strano (come in virgola mobile)
static int test = 100;
static int Test
{
get
{
return (int)(test * 0.01f);
}
}
output è: 0
Ma questo codice restituisce diverso
static int test = 100;
static int Test
{
get
{
var y = (test * 0.01f);
return (int)y;
}
}
output è: 1
Anche io ho questo codice
static int test = 100;
static int Test
{
get
{
return (int)(100 * 0.01f);
}
}
output è: 1
Guardo all'output di IL e non capisco perché C# esegue questa operazione matematica in fase di compilazione e di output diversi?
Qual è la differenza di questo codice due? Perché ho deciso di usare il risultato variabile sta cambiando?
Come si controllano i valori? – dotctor
Possibile duplicato di [La matematica in virgola mobile è rotta?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Liam
Mi guardavo intorno in una SO, ma non riesco a trovare la risposta esatta Questa risposta, tuttavia, potrebbe chiarire un po 'le cose: http://stackoverflow.com/a/15117741/2594485 –