use*_*140 5 php floating-point casting
这个问题最好用代码表示:
$var1 = 286.46; // user input data
$var2 = 3646; // user input data
$var3 = 25000; // minumum amount allowed
$var4 = ($var1 * 100) - $var2; // = 250000
if ($var4 < $var3) { // if 250000 < 250000
print 'This returns!';
}
Run Code Online (Sandbox Code Playgroud)
var_dump($var4)输出:float(25000)当转换为int时,输出:int(24999)- 从而解决问题.
我不知道该怎么办.问题发生在乘以100后,虽然我可以做很少的技巧来解决这个问题(例如*10*10)我想知道是否有一个"真正的"解决方案来解决这个问题.
谢谢 :)
这就是浮点数有时会做的事情,这都是因为浮点数有时无法精确表示整数。
您可以将数字舍入为整数值,然后将其转换为 int,而不是将其转换为 int。(可能这种强制转换是不必要的,但是 PHP 并不清楚这些事情在内部是如何发生的,即使你现在知道它们是如何发生的,将来也可能不会。
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |