【发布时间】:2021-01-13 06:02:32
【问题描述】:
我有一个浮点数,我需要将其转换为具有 5 个小数精度的字符串 (X.XXXXX),这意味着我需要至少有 6 个小数才能向上/向下舍入。问题是获取整数表示的操作会导致一个非常大的数字,我无法存储(我需要像 Big Integer 这样的东西,但出于兼容性原因我不能依赖任何内置的东西,我不会假装我理解如何以相当简单的方式重新发明一个)。我可以先发制人地限制它:
result = (m * Pow(5, +exp) / Pow(10,8));
但这只会为少数标准化浮点数(如0.3f、1-E5 或113.754f(现在“ceil”部分有 3 个“前导”数字)等)给出正确的结果)将是错误的.
考虑到我需要最大 5 (6) 位小数精度 - 有没有捷径可以走?
【问题讨论】:
-
什么语言?为什么具有所需宽度和精度的 printf 格式字符串不够用?
-
I cant relay on any built-in stuff,正如我所说(除了基本的数学运算和位移/二进制逻辑运算)。语言无关紧要,但在这种特殊情况下是 C#。 -
'pow' 是内置的。为什么可以使用它?
-
因为它的数学实现不会改变。就像加、减、除的实现一样。这跟我的问题有什么关系?
-
关于“我需要至少 6 位小数才能向上/向下舍入”:有一位制表师想和你谈谈。
标签: c# floating-point