如何在数据库中存储精确的十进制值
Posted
技术标签:
【中文标题】如何在数据库中存储精确的十进制值【英文标题】:How can store exact decimal value in database 【发布时间】:2017-05-21 03:26:14 【问题描述】:1 * 20/100 = 0.2
我想在数据库中存储相同的值我该怎么做
我将列类型设为Decimal
,长度自动设为(10,0)
我的问题是它存储为 0 而不是 0.2
【问题讨论】:
double 或 float 是你在 mysql 中的朋友 .... 您可以将表格字段从int
更改为float
您必须将表格文件类型更改为 float 或 varchar
它与浮动一起使用
我怀疑使用浮点数是个好主意 - 在您决定之前,您绝对应该阅读数据类型。
【参考方案1】:
没有数据类型会准确存储1/3
。
您的20/100
示例意味着需要DECIMAL(..., 2)
,其中...
是合适的最大位数包括2
。
如果没有进一步了解这些数字的来源或使用方式,我们无法进一步讨论。
【讨论】:
【参考方案2】:在您的数据库中使用类型“double”(10,2)。
double 是类型,长度是 10,2 它将存储 0.20
如果您只想存储一个十进制数字,请使用 10,1
谢谢。
【讨论】:
FLOAT
和 DOUBLE
不精确并且涉及额外的舍入。不要与他们一起使用(m,n)
。【参考方案3】:
将该字段的限制更改为 (10,2),然后重试。它可能会对你有所帮助。
【讨论】:
以上是关于如何在数据库中存储精确的十进制值的主要内容,如果未能解决你的问题,请参考以下文章
用一张表来存储数据状态,并且可以进行多状态精确查询;使用二进制来表示数据状态,并且是可以无顺序的状态;解决使用中间表来存储数据的多状态;数据状态还可以这么玩;