c# - c# 中的 decimal 误解?

标签 c# .net clr decimal

(在尝试分析 decimal 的工作原理时)&& 在阅读 @jonskeet article 之后看到 msdn ,并思考了最后 4 个小时, 我有一些问题:

this link他们说的很简单:

1.5 x 10^22 位有效数字

1.50 x 10^23 位有效数字。

1.500 x 10^24 有效数字等...

好的...我们明白了。

来自 jon 的文章:

 sign * mantissa / 10^exponent

As usual, the sign is just a single bit, but there are 96 bits of mantissa and 5 bits of exponent

 ^ _ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ ^^^^^

 1 _                     96                         5

好的

so max ma​​ntiss val = 2^96-1 = 79228162514264337593543950335 即:7.9228162514264*10^28 (根据我的 iphone...在 Windows Calc 中看不到指数表示法。)

注意事项:

7.9228162514264*10^2814 个有效数字(根据上面的例子)

现在指数中第 5 位的部分是无关紧要的,因为它在分母中 - 所以我需要最小值 2^0

问题#1:

msdn 说:enter image description here 28-29 位有效数字

但根据我的样本(1.500 x 10^24 有效数字)他们有 2有效数字为 7.9(7 和 9)。

如果 msdn 会这样写:

±79228162514264337593543950335 × 10^0

我会理解这一点,因为所有有效数字都在表达式中

为什么他们写 28-29 但显示 2 ?

问题 #2:

值 0.5 将如何显示小数表示法(尾数 && 指数)?

最大分母可以是 2^32-1 --> 31

谢谢你们。

问题 #3:

1+96+5 = 102 位。

msdn 说:

The decimal keyword denotes a 128-bit data type.

128-102 = 26

可以从文章中理解为什么这 26 位没有用法

最佳答案

他们将范围 指定为两位有效数字,但分别指定了精度。这就是该范围被列为“近似范围”的原因。

0.5 的 decimal 表示形式是 5 的尾数和 1 的指数(这与正常情况相反,即 有效 -1) .

关于c# - c# 中的 decimal 误解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614592/

相关文章:

c# - Visual Studio 2013 Windows 窗体应用程序无法在 Windows 7 上运行

.net - 强制 PowerShell 使用 .NET CLR 版本 2

c# - 控制对方法的访问

c# - C# ASP.NET 如何查看当前请求资源是一个页面?

c# - Excel 到 SQL、C# 库

c# - 在 "or"语句中对字符串使用 "if"运算符

c# - 为什么在 main() 退出之前调用 Dispose()?

.net - 计算两个日期之间的月数

c# - 如何将 Iron ruby​​ 嵌入到 C# 程序中?

.net - .Net 的 Beanshell 等价物