2010-09-30 87 views
0

什么是在MySQL中存储浮点数的最佳数据类型?将浮点数存储为INT?

我可以以某种方式将它存储为INT吗?

我在想VARCHAR是我的最佳选择,但是如果你们知道更好的东西,我将不胜感激。

Thanx提前!

+7

mysql的FLOAT,REAL和DOUBLE_PRECISION类型有什么问题? – Habbie 2010-09-30 14:35:04

+0

它没有什么不对,只是不知道他们,我主要是前端开发人员,而不是后端,但我给了它一个镜头,因此所有的愚蠢问题,谢谢你谦恭我! :) – Odyss3us 2010-09-30 14:45:13

+0

@ user270311浮点数的用法很少。你为什么要使用它? – 2010-09-30 15:02:51

回答

1

为什么要将浮点存储为int? MySQL和编程语言一样有十进制和浮点类型。

我假设你有一个很好的理由。要存储浮点数为int,你可以尝试的几件事情:

  • 乘以10的数量^ n,其中n是你想保持显著的位数,然后截断分数的其余部分部分。当你将它从DB中取出时,转换为浮点数/小数点并除以n。这需要一个足够大的int来存储乘积值;在32位体系结构中,“本地”int可以存储高达20亿的值。
  • 将数字拆分为整数部分及其小数部分。这需要两个字段,但每个字段的值可以达到最大整数值,因此您可以轻松精确到百万分之一。
6

取决于什么类型的浮点数你存储的关于MySQL的数字类型,所有的细节可以在这里找到:

http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html

十进制:对于货币,你是因为它的精确,你不会得到奇怪的小数点算术四舍五入应该使用十进制。

INT:是的,你可以存储浮点数作为整数来获得性能。例如,只要显示时总是/ 100,货币可以以19.56美元或1956美元的价格存储,而会计软件经常这样做。此外,只要在数据库之外除以10,000,000,则可以将整数的纬度/经度存储为322274063,-1109654800 = 32.2274063,-110.9654800。

FLOAT/DOUBLE:然后当然有很长的和双倍的。性能不是优先或小数位数变化时使用它们。

SO规则:如果性能是一个问题,你知道的小数位总是固定的长度,你可以轻松地存储的INT来存储浮动。