小编Dav*_*mov的帖子

MySQL Round()函数用于存储在字符串中的十进制

MySQL版本是5.66.22

当我ROUND对存储在varchar中的十进制数字使用函数时,我看到所有.5数字的奇怪行为

Select round(0.5)
1

Select round('0.5')
0

Select round('26.5' + 0.00)
26
Run Code Online (Sandbox Code Playgroud)

Select round(1.5)
2

Select round('1.5')
2

Select round(0.55, 1)
0.6

Select round('0.55', 1)
0.6
Run Code Online (Sandbox Code Playgroud)

我在Oracle DB(12c)中检查了ROUND函数,它按预期工作

Select round('0.5') from dual 
1

Select round(0.5) from dual 
1
Run Code Online (Sandbox Code Playgroud)

有人知道如何解释吗?

所描述的mysql round()函数行为在应用程序中引起“取整”问题。为了解决这个问题,我使用:

Select round (CAST('0.5' AS DECIMAL(10,2)))
1
Run Code Online (Sandbox Code Playgroud)

我知道将数字存储在varchar中是不好的设计,但是此应用程序是很久以前编写的,现在没有人想要重构代码

mysql sql floating-point numbers

6
推荐指数
1
解决办法
1010
查看次数

标签 统计

floating-point ×1

mysql ×1

numbers ×1

sql ×1