这个查询:
SELECT CAST(30.123456789012345 AS DECIMAL(16,16))
退货0.9999999999999999
。
除非我完全错了,否则它应该返回30.1234567890123450
。
谁能解释发生了什么?
谢谢!
你会需要DECIMAL(18,16)
.
16,16
为小数点右侧的值保留所有 16 位可用的精度。
DECIMAL(18, 16)
应该管用。正如您在MySQL 手册中所读到的:
DECIMAL 列的声明语法是 DECIMAL(M,D)。MySQL 5.1 中参数的取值范围如下:
M 是最大位数(精度)。它的范围是 1 到 65。(旧版本的 MySQL 允许的范围是 1 到 254。)
D 是小数点右侧的位数(刻度)。它的范围是 0 到 30,并且不能大于 M。
所以DECIMAL(16,16)
告诉 MySQL 使用所有数字作为十进制数字,没有任何整数部分。