mysql里float精度丢失问题!

最近发现mysql里float类型的数据查询出来显示数据有一大串的小数位,例如数据库里金额9.9查询显示出来是9.899999618530273,百度之后发现是mysql的float浮点类型精度问题

现在解决办法是用Round()函数,这里先记录,以后再看有什么好的解决办法。这个函数是四舍五入意思,所以在mysql中的数值类型,float是不精确的,尽量避免使用,可使用double或者decimal,两者的差别是double是浮点计算,decimal是定点计算,会得到更精确的数据。

在mysql中,round函数用于数据的四舍五入,它有两种形式:

1、round(x,d) ,x指要处理的数,d是指保留几位小数

这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;

2、round(x) ,其实就是round(x,0),也就是默认d为0;

下面是几个实例

1、查询: select round(1123.26723,2);

结果:1123.27

2、查询: select round(1123.26723,1);

结果: 1123.3

3、查询: select round(1123.26723,0);

结果:1123

4、查询: select round(1123.26723,-1);

结果: 1120

5、查询: select round(1123.26723,-2);

结果:1100

5、查询: select round(1123.26723);

结果:1123

(文章今日已有 1 人访问,总访问量 7 ::>_<::)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇