【问题标题】:How to format double result and return?如何格式化双重结果并返回?
【发布时间】:2019-10-22 15:10:41
【问题描述】:

我想格式化结果并返回,我该怎么做?

public virtual double GetArea()
{
    return Math.PI * this.radius * this.radius;
}

【问题讨论】:

  • 你希望它如何格式化?
  • 为什么要this 代码来进行格式化?我认为你应该让格式 well 远离计算代码。例如,您可能需要在不同的用户界面中以两种不同的方式格式化相同的结果。
  • 您的方法当前返回double,它没有任何格式——它只代表数字本身。如果您希望将其格式化为文本,则需要返回 string,或者将 double 转换为您在其他地方首选格式的 string
  • @Yamis:double 值没有“逗号”甚至“数字”,它只是一个数值。显示格式在 UI 中完成。 docs.microsoft.com/en-us/dotnet/api/system.double.tostring
  • @Yamis:那将是“截断”,而不是四舍五入。

标签: c# formatting return-value


【解决方案1】:
public virtual double GetArea()
{
    return Math.Round(Math.PI * this.radius * this.radius, 2);
}

Math.Round 会将整数四舍五入到第二个参数中指定的小数位数 - 在这种情况下,它将四舍五入到小数点后两位。

更新,供参考;

Math.Floor 向下舍入,Math.Ceiling 向上舍入,Math.Truncate 向零舍入。因此,Math.Truncate 类似于 Math.Floor 用于正数,类似于 Math.Ceiling 用于负数。

为了完整起见,Math.Round 舍入到最接近的整数。如果该数字恰好在两个整数之间,则向偶数舍入。

【讨论】:

    【解决方案2】:
    (Math.Truncate(GetArea() * 100) / 100).ToString("N2");
    

    【讨论】:

    • 虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量(例如,“N2”是什么意思),并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 2015-02-15
    • 2011-07-13
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    相关资源
    最近更新 更多