c# - C#中的工程符号?

标签 c# string

是否有任何代码(或内置函数)允许以工程符号输出 float ?

例如,1.5e-4 将显示为 150µ,5e-3 将显示为 5m

最佳答案

这可能需要重构:

private static string ToEngineeringNotation(this double d)
{
    double exponent = Math.Log10(Math.Abs(d));
    if (Math.Abs(d) >= 1)
    {
        switch ((int)Math.Floor(exponent))
        {
            case 0: case 1: case 2:
                return d.ToString();
            case 3: case 4: case 5:
                return (d / 1e3).ToString() + "k";
            case 6: case 7: case 8:
                return (d / 1e6).ToString() + "M";
            case 9: case 10: case 11:
                return (d / 1e9).ToString() + "G";
            case 12: case 13: case 14:
                return (d / 1e12).ToString() + "T";
            case 15: case 16: case 17:
                return (d / 1e15).ToString() + "P";
            case 18: case 19: case 20:
                return (d / 1e18).ToString() + "E";
            case 21: case 22: case 23:
                return (d / 1e21).ToString() + "Z";
            default:
                return (d / 1e24).ToString() + "Y";
        }
    }
    else if (Math.Abs(d) > 0)
    {
        switch ((int)Math.Floor(exponent))
        {
            case -1: case -2: case -3:
                return (d * 1e3).ToString() + "m";
            case -4: case -5: case -6:
                return (d * 1e6).ToString() + "μ";
            case -7: case -8: case -9:
                return (d * 1e9).ToString() + "n";
            case -10: case -11: case -12:
                return (d * 1e12).ToString() + "p";
            case -13: case -14: case -15:
                return (d * 1e15).ToString() + "f";
            case -16: case -17: case -18:
                return (d * 1e15).ToString() + "a";
            case -19: case -20: case -21:
                return (d * 1e15).ToString() + "z";
            default:
                return (d * 1e15).ToString() + "y";
        }
    }
    else
    {
        return "0";
    }
}

关于c# - C#中的工程符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/808104/

相关文章:

c# - 获取我的 Crystal 报告的文件名作为 C# 表单中的标题

c# - 我可以为我不直接控制的两个类添加隐式转换吗?

c# - 分割字符串有异常吗?

string - 在PLSQL中提取URL路径段字符串

c# - 向 UI 添加内容时如何阻止 UI 被锁定

c# - 在 C# 中从 XML 文件中获取键的值

c# - 如何将用户复选框检查写入数据库中的多条记录 - 使用 MVC、C#、Razor、nHibernate

javascript - 在字符串左侧添加空格

c - 如何在 C 中递归返回字符串值?

javascript - 如何在 onClick 处理程序中转义 JavaScript 代码中的字符串?