首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql双长误差

问Mysql双长误差
EN

Stack Overflow用户
提问于 2018-06-17 06:24:46
回答 4查看 6K关注 0票数 3

我想要%的do列。

我需要写: 1.00,2.00,99.99,100.%

我怎么能用双类型来做这个?

现在我有:

代码语言:javascript
复制
Double(4,2)

但是,当我在列中写100时,我会得到错误:

超出范围的数值:列的1264超出范围值

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-17 06:28:47

看看答案这里 (double和decimal有相同的语法)或MySQL手册

双倍(M,D) M是数字的总数,D是小数点后面的数字数。如果省略M和D,则将值存储到硬件允许的范围内。一个双精度浮点数精确到大约小数点15位.

简而言之,DOUBLE(4,2)指最多4位数字,小数点之后的2位数字。因此,要支持两位小数直到100,您需要:

代码语言:javascript
复制
double(5,2) unsigned

请注意,unsigned不是强制性的,但如果您知道不需要负值,则可以更好地执行和安全操作。

票数 3
EN

Stack Overflow用户

发布于 2018-06-17 06:27:18

double(4,2)指的是一个双数,总共有四个数字,其中两个是小数点的右边,这意味着你的左边只有4-2=2位数字。100在小数点左侧有三位数字,因此出现了错误。相反,使用double(5,2)可以解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2018-06-17 06:44:06

来自MySQL文档

MySQL允许使用非标准语法:

代码语言:javascript
复制
FLOAT(M,D) or REAL(M,D) or DOUBLE PRECISION(M,D).
Here, (M,D) means than values can be stored with up to M digits in total, 
of which D digits may be after the decimal point.   

例如,

定义为浮点数(7,4)的列在显示时将类似于-999.9999。

MySQL在存储值时执行四舍五入,因此如果将999.00009插入浮点数(7,4)列,则近似结果为999.0001。

谈到您的问题,您需要增加M,即Double(5,2)的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50894229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档