假设我有一组 float
数字,每个数字都有 int
有效数字的值。
查找每个值的最小有效步长(10 的幂)的最简单、最快的 C# 方法是什么?
*以粗体标记每个值的有效数字。
我很想使用Math.Log10()
不知何故,但我还不知道如何。
最佳答案
一种解决方案:
static float MinimumSignificantStep(float number, int significantFigures)
=> (float)Math.Pow(10, Math.Floor(Math.Log10(Math.Abs(number))) - significantFigures + 1);
如果有更快的解决方案,我不会感到惊讶。
请记住, float 可能会令人惊讶,因为它们存储为二进制数乘以 2 的幂,这并不总是与我们通常使用的 10 的幂很好匹配。因此,预计 0.999999、0.0001 或靠近边缘的类似数字最终会得到“错误”的位数。
关于c# - 考虑到有效数字的数量,如何找到浮点值的最小有效步长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76732568/