将字符串转换为float或double时精度损失

时间:2016-02-22 17:18:02

标签: php mysql

我是PHP的新手,我正面临这个问题:

$val = "13.0074809789657";
echo "$val"."<br>";
echo "number_format(\$val, 16,'.',''):" . number_format($val, 16,'.','');
echo "<br>";
echo "number_format(\$val):" . number_format($val);
echo "<br>";
echo "floatval(\$val):" . floatval($val);
echo "<br>";
echo "doubleval(\$val):" . doubleval($val);

此代码打印以下内容:

13.0074809789657
number_format($val, 16,'.',''):13.0074809789657007 //-->why adding trailing 007? This changes from time to time
number_format($val):13
floatval($val):13.007480979 //--> precision loss here: where are the other trailing decimals?
doubleval($val):13.007480979 //--> precision loss here: where are the other trailing decimals?

由于我需要在一个MySQL数据库中存储val(在一个定义为DECIMAL (32, 16)的列中),我需要一种方法来准确获取所有小数的13.0074809789657或添加尾随0的方法#&# 39; s并且不知道如何。

0 个答案:

没有答案