我正在建立一个电子商务应用程序,在那里我将存储客户支付的金额,即最多2位十进制数。此金额将用于大量计算,如财务计算,报告等。
我应该选择decimal
还是float
进行此类计算?
答案 0 :(得分:2)
在处理货币/货币时,切勿使用浮点数。
使用固定的小数点 - 存储为十进制,并执行/ 100和* 100.
有关于此问题的编号主题。
答案 1 :(得分:2)
使用十进制不浮动。浮点数可能不正确舍入,只是近似值。十进制/数字是精确值
http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html
答案 2 :(得分:1)
对于存储金额,我建议仅使用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;类型更适合财务计算)。