SQL 浮点数变为小数点,如下所示:0.00000305176


SQL Floats going to decimals like this: 0.00000305176

当我与数据库中的浮点值交互时,在我的代码中的任何地方,我总是舍入(); 在 PHP 中它到小数点后 2 位,为什么我有时会在我的数据库中得到这样的值:0.00000305176?

据我所知,大多数(如果不是全部)编程语言都存在这个特定问题,原因是非技术性的,因为机器使用二进制系统来完成操作,据我所知,而我们期望结果为十进制系统。

如果我理解正确,该语言无法精确表示诸如 0.1、0.2 左右的值,因为它不像我们那样理解小数。

虽然我们在 10s、100 和 1000 上有十进制递增,但在数学上表示的幂

是 10^1、10^2、10^3,小数点以相同的方式 10^-1、10^-2、10^-3,代表 0.1、0.01 和 0.001。

然而,在二进制中,底数是 2 而不是 10,所以相同的幂指数适用,你会得到 2、4、8,在十进制中你会得到 0.5、0.25、0.125、0.0625。所以你看,一台机器很难得到精确的0.1,但它可以接近。

本文中有关此内容的更多信息