Perché il primo esempio stampa un risultato errato?Domanda operatore modulo Perl
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
Perché il primo esempio stampa un risultato errato?Domanda operatore modulo Perl
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
È a causa dell'aritmetica in virgola mobile.
print $x = int(100*1.15);
Ti dà 114.
arrotondamento. Tieni presente che i computer non possono rappresentare perfettamente le posizioni decimali effettive - si avvicinano. Sul mio computer, perl -le 'print $x = (100*1.15)-115'
dà il risultato -1.4210854715202e-14
, il che significa che 100*1.15
è quasi, ma non del tutto, 115.
Questo accade anche in PHP. Python dice che è 5.0 (yep,% 5 = 5.0) – NullUserException
@NullUserException: tnanks. Python Shell è buono per testare i risultati dei numeri float aritmetici :-) –
Quindi è rubino. Ruby mi dice che è 4.999999 – NullUserException