我想要我的蛋糕并吃掉它。我想在不影响其他计算的准确性的情况下最大程度地美化(四舍五入)数字。我在 C# 中使用双打(也有一些字符串转换操作)。
这就是问题所在。我理解数字表示的固有局限性double
(所以请不要解释)。但是,我想以某种方式对数字进行四舍五入,以使最终用户在美学上令人愉悦(我正在制作一个计算器)。问题是 X 有效数字舍入在一种情况下有效,但在另一种情况下无效,而按小数位四舍五入在另一种情况下有效,但不是第一种情况。
观察:
- 案例 A:Math.Sin(Math.Pi) = 0.000000000000000122460635382238
- 案例 B:0.000000000000001/3 = 0.000000000000000333333333333333
对于第一种情况,我想按小数位数四舍五入。这会给我我正在寻找的漂亮整洁的零。按 Sig 数字四舍五入意味着我也会保留错误的数字。
但是对于第二种情况,我想按有效数字四舍五入,因为如果仅按小数位四舍五入,我会失去大量的准确性。
有没有一种通用的方法可以同时满足这两种类型的计算?