【问题标题】:How do I make sure a decimal is always displayed as xxxx.xxxx positive and negative?如何确保小数始终显示为 xxxx.xxxx 正负?
【发布时间】:2012-03-29 11:00:31
【问题描述】:

我在 C# 中的一个对象上有一个小数。我希望能够在值为 -1.61769 的那一刻将其显示为 xxxx.xxxx,基本上我想将最后两位数字向上舍入并确保它在小数点后只有 4 个小数位。我不确定这是数学运算(即 Math.Round)还是验证运算(即 string.Format)还是两者兼而有之?...

希望有人能帮忙...

【问题讨论】:

  • -1.61769 在您的“xxxx.xxxx”格式中应该如何显示? -0001.6177?

标签: c#


【解决方案1】:

试试这个:

string result = d.ToString("0.0000");

您可能还想指定一种文化:

CultureInfo cultureInfo = CultureInfo.InvariantCulture;
string result = d.ToString("0.0000", cultureInfo);

结果:

-1.6177

在线查看:ideone

【讨论】:

【解决方案2】:

这取决于您是最多四个小数位,还是精确四个小数位。

如果对值进行四舍五入,则最多得到四位小数:

value = Math.Round(value, 4);

例如,值1.61799 将四舍五入为1.6180 并显示为1.618

如果你格式化这个值,你会得到四位小数:

string formatted = value.ToString("0.0000");

【讨论】:

  • 实际上,调用Math.Round(value, 4).ToString() 将给出四位小数。 1.61799m 将四舍五入为 1.6180m 并显示为“1.6180”(或“1,6180”,或者可能是其他内容,具体取决于文化)。我认为您正在考虑双打,但这个问题是关于小数的。
  • @hvd:好点,但不确定该操作是指Decimal 类型值还是只是一个十进制值。
【解决方案3】:

如果你想要一个字符串,你必须检查 string.Format。

检查链接c# double format

如果您正在寻找保持数字的值,您应该使用 Math.round

【讨论】:

    【解决方案4】:

    你试过Math.Abs()吗? 根据这个MSDN-Page 这是不可能的。 因为它会显示不同的值。

    Math.Abs(-1.61769).ToString("####.####");

    【讨论】:

    • 这不是作者想要的。他想四舍五入这个值,而不是做它的绝对值,这会得到负正号。
    • @Ramhound 问题要求“始终显示为 xxxx.xxxx 正负”——如果 x 表示数字,则 xxxx.xxxx 中无处可放置符号。我认为你是对的,这不是作者的意思,但这不是拒绝仅仅假设问题是正确的答案的理由。
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2011-01-01
    • 2016-02-24
    相关资源
    最近更新 更多