RUBY作者隐藏在程序的彩蛋...愚人节to_i
只有4.1不正常...4.1"愚人节"?作者留在ruby里的一个彩蛋?
irb(main):030:0> (4.1-0.1).to_i
=> 3
irb(main):031:0> (3.1-0.1).to_i
=> 3
irb(main):032:0> (4.2-0.1).to_i
=> 4
irb(main):036:0> (4.1-1.1).to_i
=> 2
只有4.1不正常...4.1"愚人节"?作者留在ruby里的一个彩蛋?
irb(main):030:0> (4.1-0.1).to_i
=> 3
irb(main):031:0> (3.1-0.1).to_i
=> 3
irb(main):032:0> (4.2-0.1).to_i
=> 4
irb(main):036:0> (4.1-1.1).to_i
=> 2
>> (4.000000001-0.000001).to_i
=> 3
>> (4.000000001-0.0000000001).to_i
=> 4
貌似 微积分 哈
少0
就是4.1有问题。
<?php
$a=ceil(4.1-0.1);
echo $a; //4
echo"<br/>";
$b=floor(4.1-0.1);
echo $b; //3
echo"<br/>";
$c=round(4.1-0.1);
echo $c; //4
echo"<br/>";
$d=intval(4.1-0.1);
echo $d; //3
?>
irb(main):039:0> (4.1-3.1).to_i
=> 0
作为计算机和数学规律的必然结果:长度不受限的十进制浮点数不可能完全准确地在二进制下保存和去处。所以,当你看到
puts 0.5-0.4-0.1不等于零而是等于-2.77555756156289e-17时,请不要惊讶。
讲的通就是科学,讲不通就是bug,抑或未解之谜
irb(main):001:0> (4.1-0.1).to_s.to_i
=> 4
O(∩_∩)O~
http://www.00857.cn