1
11138 2013-09-25 22:52:49 +08:00 1
加上:
use bignum; 或者用 Math::BigFloat 模块解决(建议)。 |
2
18m OP 非常感谢,已经解决。
我再研究一下为什么会产生这个问题。 |
3
polythene 2013-09-25 23:33:46 +08:00
那是因为计算机本身是无法精确的表示一个浮点数的,这不是perl的问题,而是计算机本身结构的问题,你用python, ruby, c都会得到同样的结果。
|
4
18m OP |
5
polythene 2013-09-26 00:20:08 +08:00
printf("%.4f\n", 4.5232-4.5111);
=>0.0121 具体请谷之"perl print 浮点数"。 |
6
11138 2013-09-26 00:25:38 +08:00
use Math::BigFloat;
my $a1 = 2.25; my $a2 = 2.24; $a1 = Math::BigFloat->new($a1); $a2 = Math::BigFloat->new($a2); my $a3 = $a1 - $a2; print "\$a3 = $a3\n"; 另外,我不建议直接加: use bignum; 是因为它与timelocal有可能出现冲突(其它的没遇过),导致结果不对。 |