我需要将 25979.699999999997 之类的值四舍五入到 15 位数字,使其变为 25979.7 并且不包含任何无关紧要的零。
背景: 我正在尝试使用 OpenXML SDK 解析一个 excel 文件,并且有一个十进制值(例如 25979.7)被读取为 25979.699999999997。
当 MS excel 显示该值时,它总是将它们四舍五入为 15 位数字并删除尾随零,因此它变成 25979.7,但是当我使用 OpenXML SDK 读取时它不会自动执行此操作。
有什么想法吗?
编辑:实际上我不想修改该值,只想以该格式(作为字符串)显示。
最佳答案
好吧,你可以试试不那么复杂的数学:
var x = 25979.699999999997;
var y = Math.Round(x, 15 - (int)Math.Floor(Math.Log10(x) + 1));
y
将正好是 25979.7
这里我们计算小数点前的位数为
Math.Floor(Math.Log10(x) + 1)
然后从 15 中减去它得到剩余的小数位数。
关于c# - 如何将 Decimal 值四舍五入到一个精度,以便总位数不超过 15?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967103/