W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
在計(jì)算中過度相信 IEEE 浮點(diǎn)數(shù)是一種錯誤。例如:
print "---\n";
print "A: ", 2.4, "\n";
print "B: ", 0.2*12, "\n";
if ( 0.2*12 == 2.4 ) {
print "These are equal.\n";
}
else {
print "These are not equal.\n";
}
A: 2.4
B: 2.4
These are not equal.
這樣的結(jié)果是由于這個事實(shí):?0.2?(1/5) 在 IEEE 空間無法被表示為二進(jìn)制分?jǐn)?shù)。
因此,如果你想要檢查浮點(diǎn)數(shù)的相等性,那么可以使用?sprintf
?或類似 的東東。
參閱?http://perldoc.perl.org/perlfaq4.html?了解細(xì)節(jié)。
不要使用?int()
?來做數(shù)字舍入,它只會返回整數(shù)部分。sprintf()
?或?printf()
?一般夠用了。
printf("%.3f", 3.1415926535); # prints 3.142
如果你需要向下或向上舍入,那么可以使用?POSIX?模塊所提供的?ceil()
?和?floor()
函數(shù)。其中,ceil()
?是向上舍入,而?floor()
?是向下舍入。
use POSIX;
my $ceil = ceil(3.5); # 4
my $floor = floor(3.5); # 3
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: