有人可以告诉小数变量不能做什么,但同时双倍可以吗?
除了十进制之外,还有什么呢?
我在找到(sqroot 5)的功率超过2000000时遇到了麻烦
e.g。 (3 + root(5))升至300000 ......这里使用二项式扩展时可以使用什么?
我可以使用双/小数吗?主要区别是什么?
注意:我想在小数点前保留最后3位小数,以回答100%的准确度。
答案 0 :(得分:9)
简而言之:
Decimal
是十进制浮点类型,因此它可以表示精确的十进制值,例如: 0.1。它具有相当高的精度,但相对有限的范围。它是用软件实现的,因此速度相对较慢。Single
/ Double
是二进制浮点类型,因此它们只能表示可以用二进制精确表示的数字 - 不包括十进制值例如,0.1。它们的精度相对较低,但范围很广。它通常用硬件实现,因此非常快。此外float
/ double
代表正无穷大,而“不是数字” - decimal
没有任何此类代码。
有关详细信息,请参阅binary floating point和decimal floating point上的文章。
答案 1 :(得分:2)
decimal.MaxValue = 79,228,162,514,264,337,593,543,950,335
double.MaxValue = 1.7976931348623157E+308
(5.24) ^ 300000 = ???
我不认为如果不使用比双倍更加敏锐的数学库,你可以轻松地将5增加到300000的力量....
答案 2 :(得分:0)
十进制是基数10,这意味着他可以将0.1表示为0.1
double是一个基数2 - 二进制 - 这意味着他不能。 (它的无限数量为0,1)
double可以存储比十进制更大的数字
十进制更准确。