昨天我问了这个一般性问题关于小数及其内部精度。这是一个关于我试图解决的场景的具体问题。
我在 Sql Server 中有一个列,输入为十进制(18,6)。
当我获取这些值时,创建的 .net 小数与数据库中的精度匹配。它们看起来像这样:
1.100000
0.960000
0.939000
0.844400
0.912340
我需要根据以下规则呈现(ToString)这些值:
- 始终显示非零。
- 显示小数点后第 n 位或之前的尾随零。
- 不显示小数点后第 n 位的尾随零。
所以,当 n 为 3 时,这就是我想要的:
1.100
0.960
0.939
0.8444
0.91234
现在,我编写了一些代码,ToString 是小数 - 删除所有尾随零,然后分析字符串查找小数点并计算小数位数以查看需要重新添加多少个尾随零。有更好的方法来实现这一点吗?
另外,我知道我在上面的问题中说了 ToString...但是如果我可以在离开数据访问层时修改小数,以便消费者始终获得具有适当精度的小数,那就更好了。是否可以在不进行字符串操作的情况下对小数本身执行此操作?
要输出 n=3 所需的格式,您可以使用:
number.ToString("0.000###")
使用 n 作为参数,您可以构建自定义字符串格式:
string format = "0." + new string('0', n) + new string('#', 6 - n);
s = number.ToString(format);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)