相关疑难解决方法(0)

基本数学的PHP浮点错误

可能重复:
为什么十进制数不能用二进制表示?
浮动值的问题

$var1 = 1;

for ( $i=0; $i<30; $i++ ) {
  $var1 += 0.1;
  $var2 = floor($var1);
  $var3 = $var1-$var2;
  if ( $var3 == 0.5 ) {
    $var1 = $var2+1;
  }
}
Run Code Online (Sandbox Code Playgroud)

这个循环的意图是计算1.0,1.1,1.2,1.3,1.4,然后跳到2.0,2.1,2.2等

我得到的问题是if声明永远不会成立.每十分之一的计算也解决了一些疯狂的科学答案.

我该如何解决?请帮忙!

编辑:我写了一个令人沮丧的匆忙的问题,这不止一个,我现在看到了.

问题的第一部分实际上是"我怎样才能通过这个浮点查询来完成这项工作"和"为什么这个问题甚至会发生!"

感谢所有好的回复,我将答案正确,这很容易回答"如何使这项工作"的核心问题.

用0.49而不是0.5和>而不是==来做.原油而不是世界上最好的代码,但确实解决了原始问题.感谢大家,我将阅读其他回复并跟进以改进我的编码.

再一次,非常感谢.

php math

6
推荐指数
2
解决办法
1404
查看次数

标签 统计

math ×1

php ×1