"decimal"值在VB或C#中的内部格式是什么?
我不知道这是否和我目前正在做的任何事情有关,但这是那些需要了解的东西之一。例如,了解存储多少位和如何存储负数可以意味着当你看到负数出现在你期望的正数位置时,你可以立即想到,“啊,这里发生了溢出”,而不是被深深的神秘所困扰。
"decimal"值在VB或C#中的内部格式是什么?
我不知道这是否和我目前正在做的任何事情有关,但这是那些需要了解的东西之一。例如,了解存储多少位和如何存储负数可以意味着当你看到负数出现在你期望的正数位置时,你可以立即想到,“啊,这里发生了溢出”,而不是被深深的神秘所困扰。
Decimal值类型表示范围从正79,228,162,514,264,337,593,543,950,335到负 79,228,162,514,264,337,593,543,950,335的十进制数。 Decimal值类型是 适用于需要大量有效整数和小数位且不进行四舍五入误差的金融计算。 Decimal类型不消除舍入的需求。相反,它 减少由于舍入而引起的错误。
十进制数是一个浮点值,由符号、数字值和缩放因子组成, 数字值中的每个数字的值范围从0到9,以及一个 缩放因子,指示分隔整数和小数部分的浮动小数点的位置。
十进制值的二进制表示形式由1位符号、96位整数和一个缩放因子组成, 96位整数和用于指定其一部分为十进制分数的缩放因子。 缩放因子隐含地为数字10,被提高到指数范围从0到28。因此,十进制值的二进制表示形式为((2 96 至2 96 ) / 10 (0到28)),其中 -2 96 -1等于MinValue,2 96 -1等于MaxValue。有关十进制值的二进制表示形式和示例的详细信息,请参见Decimal(Int32 [])构造函数和GetBits方法。
缩放因子还保留十进制数字中的任何尾随零。尾随零不影响十进制数的值。 算术或比较操作。但是,如果应用适当的格式字符串,则可以由ToString方法显示尾随零。
GetBits
文档中描述了其二进制表示形式:decimal
都指的是System.Decimal
类型,该类型有详细的文档:System.Decimal。
decimal (C# Reference)
Decimal Data Type (Visual Basic)decimal关键字表示128位数据类型。与浮点类型相比,decimal类型具有更高的精度和更小的范围,因此非常适用于财务和货币计算。下表显示了decimal类型的近似范围和精度。
范围:±1.0 × 10−28 to ±7.9 × 1028 精度:28-29个有效数字
保存带有可变10的幂次方缩放因子的12字节整数数字,表示带符号的128位(16字节)值。缩放因子指定小数点右侧的数字位数;它的范围从0到28。当缩放因子为0(没有小数位)时,最大可能值为+/-79,228,162,514,264,337,593,543,950,335(+/-7.9228162514264337593543950335E+28)。当缩放因子为28时,最大值为+/-7.9228162514264337593543950335,最小非零值为+/-0.0000000000000000000000000001(+/-1E-28)。