php中floatval的额外精度

php中floatval的额外精度,php,floating-point,precision,numberformatter,Php,Floating Point,Precision,Numberformatter,我正在运行一段代码,将本地主机(即wamp服务器)上的字符串转换为浮点数 $row['lat'] = floatval($row['lat']); // Output : 15.2904195 <-- preferred format 我不想要这种精度,我更喜欢在本地主机上接收的数字,为什么输出会这样变化,我该如何改变它 我尝试过number\u format()它可以工作,但它返回一个字符串,我希望返回的是一个数字而不是字符串。如果number\u format()可以工作,然后再

我正在运行一段代码,将本地主机(即wamp服务器)上的字符串转换为浮点数

$row['lat'] = floatval($row['lat']);
// Output :  15.2904195  <-- preferred format
我不想要这种精度,我更喜欢在本地主机上接收的数字,为什么输出会这样变化,我该如何改变它


我尝试过
number\u format()
它可以工作,但它返回一个字符串,我希望返回的是一个数字而不是字符串。

如果
number\u format()
可以工作,然后再次将其转换为float value
(float)number\u format()
你不能使用round@VipulSolanki尝试过但没有工作,仍然得到巨大的number@Lee尝试过但没有成功,大量的againI认为问题在于PHP使用的是二进制浮点。在二进制浮点中,15.2904195不能精确表示。本地主机可能显示“15.2904195”,而在线服务器显示“15.2904195000000004966977940057404339313507080078125”,但它们在内存中的值完全相同;只有显示器不同。如果是这样,您将无法以二进制浮点形式存储15.2904195;这在数学上是不可能的。您所能做的就是控制显示或使用不同的格式(例如,将数字存储为字符串)。
15.2904195000000004966977940057404339313507080078125