下面的Perl代碼浮點數轉換爲錯誤整數的Perl轉換成int錯誤的,但只有特定數量
use strict;
my $zahl =297607.22000;
$zahl=$zahl * 100;
print "$zahl\n";
my $text=sprintf ("%017d",$zahl);
print $text;
的這個輸出是:
29760722
00000000029760721
的事情是,你可以改變給定的號碼爲其他號碼,它的工作原理。
任何想法這裏有什麼問題或Perl只是做錯了嗎?
感謝您的幫助!
爲什麼在這兩個例子中四捨五入? – Mat
@Mat:因爲int向零舍入,最接近297607.22000的浮點數表示恰好是297607.21999999997 – ysth
@ysth:我知道這是一個舍入問題。我不明白的是爲什麼不同的規則適用於第一個'print'語句和'sprintf'中的四捨五入。 – Mat