MySQL 存储小数
我需要存储大量小数位数字(小数点前 3 位,小数点后 6 位)。
根据我对规范的理解,这将需要 8 个字节。我可以将数字存储为 int,它只需要 4 个字节,并在检索后使用固定比例因子进行转换。
有没有更好的选择而不是使用 int,我无法轻松地对数字进行任何算术?
谢谢。
I need to store a large volume of small decimals numbers (3 digits before the decimal, 6 digits after the decimal).
From my understanding of the spec, this will require 8 bytes. I could store the number as an int which requires only 4 bytes and convert after retrieval using a fixed scale factor.
Is there a better alternative instead of using an int, I can't easily do any arithmetic on the numbers?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为这是不正确的。
DECIMAL(9,6)
应该可以完成这项工作。根据mysql 5.1手册,3位数字需要2个字节,6位数字需要3个字节。恕我直言,总共是 5 个字节而不是 8 个字节。
因此,与您建议的整数“黑客”相比,您不需要更多的内存。在你的情况下我肯定会选择十进制。
I do not think this is correct.
DECIMAL(9,6)
should do the job.It will require 2 bytes for the 3 digits and 3 bytes for the 6 digits according to mysql 5.1 manual. IMHO that´s 5 bytes not 8 bytes in total.
You will therefore not require a lot more memory than with the integer "hacking" you proposed. I would definitely go with decimal in your case.
不,如果您使用 MySQL 的“
int
”数据类型,它将不起作用。这是因为整数无法处理小数精度。根据您的问题,您应该使用“定点数据类型”,这将有利于您进行大型计算和计算。货币数据。在 MySQL 中,所需的数据类型是“
DECIMAL
”,您可以阅读更多相关信息 此处。在您的情况下,正确的语法是“
DECIMAL (9, 6)
”,其中 9 表示总共最多可以存储 9 位数字,其中小数点后有 6 位数字,小数点前 3 位。希望有帮助。
No, it won't work if you are using "
int
" data type of MySQL. This is because integers can't handle decimal precision.According to your question, you should be using "Fixed Point Data Types", which will benefit you in large calculations & monetary data. In MySQL, the required data type is "
DECIMAL
" and you can read more on it here.The proper syntax in you case will be "
DECIMAL (9, 6)
", where 9 means that values can be stored with up to 9 digits in total, of which 6 digits are after the decimal point and 3 digits are before the decimal point.Hope it helps.