我討厭十進制數。對於1.005,我沒有得到我期望的結果與下面的代碼。在perl中舍入十進制數,錯誤結果
#!/usr/bin/perl -w
use strict;
use POSIX qw(floor);
my $num = (1.005 * 100) + 0.5;
print $num . "\n"; # 101
print floor($num) . "\n"; # 100
print int($num) . "\n"; # 100
對於2.005和3.005它工作正常。
有了這個醜陋的「黑客」,我得到了預期的結果。
#!/usr/bin/perl -w
use strict;
use POSIX qw(floor);
my $num = (1.005 * 100) + 0.5;
$num = "$num";
print $num . "\n"; # 101
print floor($num) . "\n"; # 101
print int($num) . "\n"; # 101
這樣做的正確方法是什麼?
每位計算機科學家應該瞭解的浮點算術:http://docs.sun.com/source/806-3568/ncg_goldberg.html。 你可以嘗試使用整數對作爲有理數而不是這個。 – nlucaroni 2010-12-06 21:24:23
實際上,您使用的是浮點數,而不是十進制數,因爲該術語通常在體系結構理論中定義。 – cdhowie 2010-12-06 21:24:29