PHP字符串浮动奇怪
我不明白结果是什么?!29.85-3.5527136788005E-15 PHP错误?与floatval或cast的结果相同 你能帮助我吗?下面是简单的示例代码:PHP字符串浮动奇怪,php,string,Php,String,我不明白结果是什么?!29.85-3.5527136788005E-15 PHP错误?与floatval或cast的结果相同 你能帮助我吗?下面是简单的示例代码: <?php $new = array('29.85'); $two = array('6.95','9.95','12.95'); $montantTotal = 0 ; foreach ($two as $lignes) { $montantTotal += floatval($lignes); } echo
<?php
$new = array('29.85');
$two = array('6.95','9.95','12.95');
$montantTotal = 0 ;
foreach ($two as $lignes) {
$montantTotal += floatval($lignes);
}
echo $montantTotal ;
$result = $montantTotal - floatval($new[0]);
echo $result;
结果非常小。它使用科学记数法
$montantTotal = 29.85
$result = -3.5527136788005E-15
你可以用
语法
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
示例
$new = array('29.85');
$two = array('6.95','9.95','12.95');
$montantTotal = 0 ;
foreach ($two as $lignes) {
$montantTotal += (float)$lignes;
}
// echo $montantTotal ; echo "<br>";
$result = number_format($montantTotal,8,".","") - number_format((float)$new[0],8,".","");
echo $result;
这对于所有使用IEEE-754的语言来说都是很常见的,可能是E means指数型的重复,并且由于浮点数学的缺陷,得到的数值非常小。要纠正此问题,您必须使用以获得正确的显示。如果您让一个人在一张纸上写下1/3
的结果,他们可能会写下类似0.3333333
的内容,但因为这张纸不适合所有数字,当他们做一个0.333333*3
的时候,他们没有得到他们应该得到的1,而是像0.9999999
那样。数学坏了吗?不,我们只是没有足够的纸张。计算机无法存储许多浮点数的精确值,比如(1/3)的结果。这就是为什么在进行浮点运算时,您应该保留舍入函数和浮点比较函数作为您的同伴
0