【问题标题】:Trimming a float [duplicate]修剪浮动[重复]
【发布时间】:2012-04-29 02:27:41
【问题描述】:

可能重复:
Leave only two decimal places after the dot
Formatting a float to 2 decimal places

如果我有一个包含 153.2154879 之类的浮点数,有没有办法将它转换为字符串但只显示 4 个小数位?我知道我可以使用"000.000" 对其进行格式化,但前面的数字并不总是必须是 3 位数。那么有没有办法显示所有前面的数字(153),但只显示字符串中该点之后的前 4 个字符?

【问题讨论】:

标签: c# winforms floating-point digit


【解决方案1】:

应该这样做:

your_number.ToString("0.####");

这将显示最多 4 位小数。

【讨论】:

  • your_number.ToString("0.####") 会更高效,并提供文化敏感的重载。
  • -1。将浮点数转换为字符串,然后再返回浮点数只是为了将其圆整是没有意义的。
  • @Aliostad 舍入和截断是两件不同的事情。将数字 2 格式化为最多 4 个小数位不是四舍五入。根据 phoog 的建议,我更新了我的答案以包括一种更“有效的方法”。
【解决方案2】:

我通常使用像"#0.0000" 这样的格式字符串。

【讨论】:

  • 所以# 只是意味着显示所有字符?从来不知道这个谢谢!
  • -1。将浮点数转换为字符串,然后再返回浮点数只是为了对其进行圆整是没有意义的。
  • 你为什么要四处投反对票给 Aliostad 的每个人?我明确表示我想显示 4 位小数,我从未说过我想将其四舍五入并将其转换回浮点数!
  • @Aliostad 我们在哪里将数字转换回浮点数?
  • 对不起,我的坏人。您可以编辑您的答案,以便我投反对票吗?
【解决方案3】:

您可以使用 C# 函数 Math.Round 函数。

float a= 153.213456; Math.Round(a,3); 这会将数字四舍五入为 153.213 然后将其转换为字符串。

【讨论】:

  • 字符串格式化代码又要对数字进行四舍五入了;没有理由先调用 Math.Round。
  • @phoog 您的意思是您将浮点数转换为字符串,然后再转换回浮点数,而不使用为浮点数设计的 Round 吗??
  • @Aliostad 当然不是!问题是关于显示具有给定小数点数的浮点数,这意味着将其转换为具有该小数点数的字符串。我的意思是使用Round 来格式化数字以供显示是低效的。 如果要求在IEEE 单一二进制格式中使用四舍五入的float 进行存储或计算,那么你当然应该使用Round
  • @phoog 我认为 Aliostad 将截断与舍入混淆了。请参阅他对我的回答的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
相关资源
最近更新 更多