vb/c#十进制内部格式

vb/c#十进制内部格式,c#,.net,vb.net,types,C#,.net,Vb.net,Types,VB或C中“十进制”值的内部格式是什么 我不知道这对我现在正在做的任何事情都很重要,但知道这件事是件好事。比如,知道有多少位和负数是如何存储的,这意味着当你看到一个负数出现在你期望的正的位置时,你可以立即想到“啊,有溢出”而不是被深奥的神秘所迷惑。你的问题的答案是由以下技术人员提供的: Decimal value类型表示从 正极79228162514264337593543950335至负极 79,228,162,514,264,337,593,543,950,335. 十进制值类型为 适用于需

VB或C中“十进制”值的内部格式是什么


我不知道这对我现在正在做的任何事情都很重要,但知道这件事是件好事。比如,知道有多少位和负数是如何存储的,这意味着当你看到一个负数出现在你期望的正的位置时,你可以立即想到“啊,有溢出”而不是被深奥的神秘所迷惑。

你的问题的答案是由以下技术人员提供的:

Decimal value类型表示从 正极79228162514264337593543950335至负极 79,228,162,514,264,337,593,543,950,335. 十进制值类型为 适用于需要大量数据的财务计算 有效整数和小数位数,无舍入误差。 十进制类型并不排除四舍五入的需要。相反,它 最大限度地减少舍入误差

十进制数是一个浮点值,由一个符号、一个 数值,其中值中的每个数字的范围为0到9,以及 表示浮点小数点位置的比例因子 它将数值的整数部分和小数部分分开

十进制值的二进制表示形式由1位符号组成, 一个96位整数和一个用于划分 96位整数,并指定其小数部分。 比例因子隐式地是数字10,提升为指数 从0到28。因此,a的二进制表示形式 十进制值的形式为((-296到296)/10(0到28)),其中 -296-1等于MinValue,296-1等于MaxValue。有关十进制值的二进制表示形式和示例的更多信息,请参阅构造函数和方法

比例因子还保留小数中的任何尾随零 号码。尾随零不影响中十进制数的值 算术或比较运算。但是,尾随的零可以是 如果使用了适当的格式字符串,则由ToString方法显示 应用

以及二进制表示,如文档中所述:

十进制数的二进制表示法由1位组成 符号、96位整数和用于分割 整数,并指定其小数部分。 比例因子隐式地是数字10,提升为指数 从0到28

返回值是一个由32位有符号整数组成的四元素数组

返回数组的第一、第二和第三个元素包含 96位整数的低、中、高32位

返回数组的第四个元素包含比例因子和 签名它由以下部分组成:

位0至15(低位字)未使用,必须为零

位16至23必须包含介于0和28之间的指数,即 表示10除以整数的幂

位24至30未使用,必须为零

位31包含符号:0表示正,1表示负

请注意,位表示法区分负数和负数 正零。这些值在所有方面都被视为相等 行动

c#和VB.NET
decimal
都是指
System.decimal
,这一点有很好的文档记录:

decimal关键字表示128位的数据类型。与…相比 对于浮点类型,十进制类型具有更高的精度和 范围较小,适用于金融和货币市场 计算。十进制类型的近似范围和精度 如下表所示

范围:±1.0×10−28至±7.9×1028 精度:28-29位有效数字

保存代表96位(12字节)的有符号128位(16字节)值 按10的可变幂缩放的整数。比例因子 指定小数点右侧的位数;信息技术 范围从0到28。刻度为0(无小数位数)时 最大可能值为+/-79228162514264337593543950335 (+/-7.9228162514264337593543950335E+28)。小数点后28位 最大值为+/-7.9228162514264337593543950335,最小值为 非零值为+/-0.0000000000000000000001(+/-1E-28)


或者更好,谢谢。我不想在System.decimal下查看,我查看的是标准数据类型列表,它们讨论的是范围,而不是格式。好吧,也许那应该是一个显而易见的地方,我的大脑冻结了。