【问题标题】:Double scientific notation format 10th power C#双科学记数法格式 10 次方 C#
【发布时间】:2017-02-08 16:20:56
【问题描述】:

我有double value = 30308950000;

我想像3.03x10^10一样显示它

如何使用 C# 实现它?

我试过了

double value = 30308950000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));

输出 = 3.03E+10

我不想要3.03E+10 格式,而是3.03x10^10。 谢谢

【问题讨论】:

  • 有人如何否决这个问题?这绝对不是小事!接受的答案很糟糕。
  • 对此投反对票的人也应该在此处发表评论。所以我们可以找到更好的解决方案。
  • @Orace 这个问题不应该被否决 - 是的,但我的回答中 awful 到底是什么?请描述一下你自己,我会尽力纠正它。

标签: c# string types format double


【解决方案1】:

很遗憾,NumberFormarInfo 没有提供任何 ExponentialSign 参数。

也就是说,Exponential Format Specifier (E) 仅使用来自NumberFormarInfo 的 NegativeSign、NumberDecimalSeparator 和 PositiveSign 信息。

要做到这一点“在模式中”,您必须使用自己的 ICustomFormatter 实现,例如 here

【讨论】:

    【解决方案2】:

    简单修复:

    double value = 30308950000;
    Console.WriteLine(
        value.ToString("0.###E+0", CultureInfo.InvariantCulture)
            .Replace("E-","x10^-")
            .Replace("E+","x10^"));
    

    向乔恩·斯基特大喊! :)

    【讨论】:

    • 当然,只有当结果确实有 E+10 时才有效。它不适用于 E+9 等(如所写)。如果您想要一个仅适用于示例值的解决方案,您不妨将其更改为 Console.WriteLine("3.03x10^10")
    • 这似乎还是有点过头了。为什么不直接将E+ 替换为x10^ 并将E- 替换为x10^-
    • 因为我喜欢数学 :) 但是你又是对的。修复它-
    • 这正是我一直在寻找的输出。谢谢@JonSkeet 和 TheRealVira :)
    • @TheRealVira,首先,我没有否决你的答案,对我来说这很糟糕,因为它不能很好地扩展。如果我必须使用它,我会将它放在扩展方法中,但使用它会很困难。 E-E+ 字符串不保留为数字,您冒着替换它们的风险。就像在“Fe-O 势:3.03E-4 u”中一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多