【问题标题】:What is a more elegant way of showing N significant digits of a calculation?显示计算的 N 个有效数字的更优雅的方法是什么?
【发布时间】:2012-10-31 13:15:22
【问题描述】:

我创建了以下函数来显示数字的最后六位有效数字:

private static string ShowSigDigits(long n, int sig)
{
    string[] arr1 = n.ToString().Select(c => c.ToString()).ToArray();

    // reverse the array of string characters 
    Array.Reverse(arr1);
    List<string> stringList = new List<string>();

    for (int x = 0; x < arr1.Length; x++)
    {
        // get the last sig significant digits (loop is zero-based)
        if (x <= sig-1)
        {
            stringList.Add(arr1[x]);
        }
    }

    stringList.Reverse();

    return(string.Join("", stringList.ToArray()));
}

例如,输入 182736734,6 将得到 736734。

我确信有一种更有效的方法可以做到这一点,并希望得到一些建议。

谢谢。

【问题讨论】:

  • 也许 n % 1000000?还是它必须处理诸如 f(12345678000) == 345678000 之类的事情?
  • 您的意思是 x 最不重要吗?

标签: asp.net c#-4.0 significant-digits


【解决方案1】:

将 (x % 1000000) 转换为字符串,其中 % 代表取模运算。

【讨论】:

    【解决方案2】:

    有许多不同的方法可以做到这一点 - Substring 是最先想到的方法之一(VB.NET Strings.Right 也是如此)。

    string nString = n.ToString();
    return nString.Substring(nString.Length - sig);
    

    【讨论】:

    • 好点,但你也必须检查 nString.Length - sig >= 0;
    猜你喜欢
    • 2019-09-26
    • 2022-08-10
    • 2014-02-03
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多