在mysql中选择float和decimal

时间:2014-08-07 11:36:06

标签: mysql

我正在建立一个电子商务应用程序,在那里我将存储客户支付的金额,即最多2位十进制数。此金额将用于大量计算,如财务计算,报告等。

我应该选择decimal还是float进行此类计算?

4 个答案:

答案 0 :(得分:2)

在处理货币/货币时,切勿使用浮点数。

使用固定的小数点 - 存储为十进制,并执行/ 100和* 100.

有关于此问题的编号主题。

http://vladzloteanu.wordpress.com/2010/01/11/why-you-shouldnt-use-float-for-currency-floating-point-issues-explained-for-ruby-and-ror/

答案 1 :(得分:2)

使用十进制不浮动。浮点数可能不正确舍入,只是近似值。十进制/数字是精确值

http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html

答案 2 :(得分:1)

Reference

  

对于存储金额,我建议仅使用DECIMAL Datatype

浮点数可能不正确舍入,只是近似值。

DECIMAL NUMERIC 类型存储精确的数字数据值。在保持精确精度很重要时使用这些类型,例如使用货币数据。在MySQL中,NUMERIC实现为DECIMAL,因此以下关于DECIMAL的评论同样适用于NUMERIC。

MySQL 5.1以二进制格式存储DECIMAL值。的 Precision Math

在DECIMAL列声明中,可以(通常是)指定精度和比例;

例如:

<强> salary DECIMAL(5,2)

  

在此示例中, 5是精度,2是刻度。   精度表示为值存储的有效位数,刻度表示小数点后可存储的位数。

答案 3 :(得分:1)

Use Decimal not float.

A&#34; float&#34;在大多数环境中是二进制浮点类型。它可以准确地存储base-2值(到某个点),但不能准确存储许多base-10(十进制)值。浮子最适合科学计算。

对于大多数商业数学来说,

Decimal是一个很好的类型(但任何内置&#34; money&#34;类型更适合财务计算)。