提问人:Mike Volmar 提问时间:1/6/2017 更新时间:1/6/2017 访问量:10367
如何阻止MySQL对浮点值进行四舍五入?
how can I stop mysql from rounding float values?
问:
我将货币值作为浮点数存储在 mysql 表中。
问题是,MySQL正在向上或向下舍入数字。
例如,12345.68 四舍五入为 12345.7
我怎样才能阻止这种情况,或者我应该使用更好的数据类型吗?
我想将原始值保留在小数点后 2 位以内。
答:
3赞
Alex
1/6/2017
#1
将适用列的定义从其当前设置更改为:
FLOAT(9,2)
上一代码段中的指示 MySQL 将值保持在小数点后 2 位。目前很可能已经设置好了;因此观察到的行为。随意将 更改为更适用的值。2
1
9
有关浮点数和精度的更多信息。
评论
1赞
Tiois
9/10/2019
@Ivan格奥尔基耶夫的答案应该是公认的答案。
13赞
Ivan Georgiev
1/6/2017
#2
不要使用类型。请改用。Float 将十进制数转换为二进制,从而导致舍入(精度损失)。十进制将数字存储为小数 - 不进行转换。FLOAT
DECIMAL
在您的情况下,定义列应该是可以的。根据数字的预期大小选择宽度(第一个数字)。在此示例中,预期大小为 12 位数字(包括小数点后的数字)。DECIMAL(12,2)
评论