如何确保小数始终显示为 xxxx.xxxx 正负?

Posted

技术标签:

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

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

希望有人能帮忙...

【问题讨论】:

-1.61769 在您的“xxxx.xxxx”格式中应该如何显示? -0001.6177? 【参考方案1】:

试试这个:

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

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

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

结果:

-1.6177

在线查看:ideone

【讨论】:

csharp-examples.net/string-format-double 给出了一些很好的例子以及其他格式化等待。【参考方案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 中无处可放置符号。我认为你是对的,这不是作者的意思,但这不是拒绝仅仅假设问题是正确的答案的理由。

以上是关于如何确保小数始终显示为 xxxx.xxxx 正负?的主要内容,如果未能解决你的问题,请参考以下文章

QML 文本始终显示小数位

如何在 MySQL 中为每个 ID 只选择一行?

如何使用 BigDecimal 显示始终有 2 个小数点的数字?

如何始终在 R Shiny 的 DataTables 中显示 3 位小数? [关闭]

在 Django 模板中访问二维数组

为啥visual studio2012在新建c++项目的时候会出现这个对话框?