有人在这篇decimal vs double! - Which one should I use and when?帖子中提到,最好使用double进行物理科学计算。这是否适用于闪点,粘度,重量和体积等测量?有人可以进一步解释吗?
答案 0 :(得分:3)
十进制=精确。也就是说,我的口袋里有1.23英镑,而且申请增值税是一个已知且被接受的四舍五入问题。
当你测量某些东西时,你永远不会是准确的。如果东西长123厘米,那么严格来说它介于122.5和123.49999厘米之间......
您正在处理两种不同的数量。
所以,请使用double。
答案 1 :(得分:1)
您链接的问题是关于C#中的数据类型,而不是SQL,答案反映了这一点。
十进制是一种数据类型,用于处理货币,确保计算平衡(例如,没有损失的分数或分数)。
物理科学计算很少涉及金钱价值,因此,只要您需要准确性,就应该使用双倍。
答案 2 :(得分:1)
除非你有充分的理由不这样做,否则你总是会使用双打来记录物理测量值。使用任何浮点数时可能会出现微小的精度损失,因为二进制数不能完美地表示某些十进制数(0.1是最明显的例子),但双重表示中的不准确性将比数字小数小许多个数量级。你所做的测量中的错误。
十进制被用于非常重要的数字被正确表示,所以通常只在处理金钱时(是的,我们似乎更关心金钱而不是科学!)
答案 3 :(得分:0)
知道这个数据库会使事情变得更容易......
Oracle只有NUMBER,如果省略两个可选参数precision和scale,则为float。使用这两个参数是DECIMAL,只指定精度是INTEGER。不记得如何获得真实...
MySQL数字数据类型信息:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
SQL Server数字数据类型信息:http://msdn.microsoft.com/en-us/library/aa258271(SQL.80).aspx
我没有处理浮动和真实,但我听说它们不适合数学计算。我使用DECIMAL来获得不同的精确度,而不仅仅是货币价值。
使用哪种数据类型取决于数据以及您打算如何使用该数据。