我在MySQL中遇到过很多次小数这个问题!在MySQL中遇到很多这个十进制难度
当我把这种类型的:DECIMAL(10,8)
的最大允许值是:99.99999999
!
它应该是:9999999999.99999999
不是?
我想要点(。)后的8位数的小数点的最大值。
我在MySQL中遇到过很多次小数这个问题!在MySQL中遇到很多这个十进制难度
当我把这种类型的:DECIMAL(10,8)
的最大允许值是:99.99999999
!
它应该是:9999999999.99999999
不是?
我想要点(。)后的8位数的小数点的最大值。
用于DECIMAL列中的声明语法是DECIMAL(M,d)。 MySQL 5.7中参数的取值范围如下:
- M是最大位数(精度)。它的范围为1到65.
- D是小数点右边的数字(比例)。它有一个范围为0到30,并且必须是不大于M.
较大的第一个值是不数字在小数点的左边数,但的总位数。
这就是为什么值9999999999.99999999
与DECIMAL(10, 8)
是不可能的:它是18位数字。
第一个数字是总位数,第二个数字是小数位数。
对于您要求的编号,请尝试DECIMAL(18,8)
。
方式DECIMAL(x,y)
说明符的工作方式是x
代表总数位数和y
小数点后面的数字。
10,8表示NN.NNNNNNNN。
如果你想要更多,你需要相应地增大你的范围。
甲decimal
由两个参数定义 - DECIMAL(M, D)
,其中M
是数字的总数,并且是D
的小数点后位数出M
。要正确表示号码9999999999.99999999
,您需要使用DECIMAL(18, 8)
。
你定义DECIMAL(总持仓,总十进制)所以请记住:总小数使用总持仓的位置,如果你想大多数数字左,右,使用float类型。
首先感谢对您的评论和精度,以及我如何解决这个问题?解决办法是什么 ? –
如果你真的想在小数点右边有8位精度,那么d必须至少为8。然后,你要搞清楚,你将不得不处理的最大价值,并据此计算出米'DECIMAL(18 8)'将能够处理'9999999999.99999999'正确例如。使用float类型也可能是一个好的解决方案。 – julienc
这个很清楚,非常感谢! –