如何确保小数始终显示为 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 正负?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 BigDecimal 显示始终有 2 个小数点的数字?