时间:2021-07-01 10:21:17 帮助过:3人阅读
请你补习一下有关浮点数的知识
  即使我   
 $f = (0.530-0.500+0+0)*1000;  
 $a = (0.030*1000);  
 $s = (0.530-0.500+0+0)*1000;  
 $ssa = $a - $s;  
  
  
 这样也错啊 
  请你补习一下有关浮点数的知识  
 $f = (0.530-0.500+0+0)*1000;  
 $a = (0.030*1000);  
  
 $ssa = doubleval($a) - doubleval($f);  
  
 这样写都错...... 他是怎么计算的啊? 
  怎么说呢  
  
 简单的十进制分数不能在丢失一点点精度的情况下转化为二进制的格式,浮点数永远不会精确到最后一位,那么在PHP中,简单的浮点数运算是很有可能丢失精度,从而造成计算的结果出现混乱 
  怎么说呢  
  
 简单的十进制分数不能在丢失一点点精度的情况下转化为二进制的格式,浮点数永远不会精确到最后一位,那么在PHP中,简单的浮点数运算是很有可能丢失精度,从而造成计算的结果出现混乱  
  
 那像这样的计算,应该怎么来做? 
  
 请你补习一下有关浮点数的知识  
 $f = (0.530-0.500+0+0)*1000;  
 $a = (0.030*1000);  
  
 $ssa = doubleval($a) - doubleval($f);  
  
 这样写都错...... 他是怎么计算的啊?  
  
 这个不光php这样,JAVA也有着现象的  
 所以PHP要解决浮点数的办法有2个  
 一个是  
 if(0.030 != (0.530-0.500+0+0))  
 {  
    $s = 0.53-0.5;  
    $s =  0.03-"$s";  
    echo $s;  
 }  
 把变量的那个用双引号加起来就OK了  
 还有的一个办法就是用round函数了 
看来你还得补习一下“有效数”的相关知识