假设我们有一个System.Decimal数字.
为了说明,我们来看一个ToString()表示如下:
d.ToString() = "123.4500"
Run Code Online (Sandbox Code Playgroud)
关于这个十进制,可以说以下内容.对于我们这里的目的,比例定义为小数点右边的位数.有效比例相似但忽略了小数部分中出现的任何尾随零.(换句话说,这些参数定义为SQL小数加上一些额外的参数,以说明小数部分中尾随零的System.Decimal概念.)
给定一个任意的System.Decimal,如何有效地计算所有这四个参数而不转换为String并检查String?该解决方案可能需要Decimal.GetBits.
更多例子:
Examples Precision Scale EffectivePrecision EffectiveScale
0 1 (?) 0 1 (?) 0
0.0 2 (?) 1 1 (?) 0
12.45 4 2 4 2
12.4500 6 4 4 2
770 3 0 3 0
Run Code Online (Sandbox Code Playgroud)
(?)或者将这些精度解释为零也没关系.