【问题标题】:Converting decimal percentage to int将小数百分比转换为 int
【发布时间】:2017-06-19 18:22:08
【问题描述】:

我有一个方法可以将小数百分比转换为 int 例如 0,73 应该返回 73。 我做了你在下面看到的一团糟,但我想知道一个“更好”的解决方案。

 private static int ToPercentage(double d)
        {
            string temp = d.ToString("p");
            string temp2 = temp.Replace("%", "");
            double temp3 = Convert.ToDouble(temp2);
            int result = (int) temp3;
            return result;
        }

【问题讨论】:

  • 返回 (int)(d*100);
  • 当把一个数值转换成另一种数值时,为什么你会做中间步骤把它格式化成一个字符串然后再转回来?
  • 这和 Code Golf 正好相反。
  • 如果是 0.737 应该返回什么? 73 还是 74?

标签: c# int double


【解决方案1】:

我觉得写这个答案很糟糕,但希望这会阻止所有其他答案并关闭票证。

private static int ToPercentage(double d)
{
    return (int)(d*100);
}

编辑:感谢 Devid 的建议 :) TIL 如何在社区 wiki 帖子中做出回答!

【讨论】:

  • 如果您感觉如此糟糕,请将您的帖子设为社区 wiki,这样没人会得到分数。
  • @DavidG,不知道你能做到这一点 :) 谢谢!
【解决方案2】:

试试这个 sn-p 的代码。您无需转换为字符串然后执行替换。

private static int ToPercentage(double d)
    {
       int result = Convert.ToInt32(Math.Truncate(d * 100));
       return result;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多