【问题标题】:returning a number to its double value将数字返回到其双精度值
【发布时间】:2017-03-09 02:20:24
【问题描述】:

我正在创建一个程序来评估输入的数字,例如我输入 5 函数应该能够返回数字,这意味着:

5  => 500   
4  => 400  
6  => 600 
10 => 1000 and so on.

这是我到目前为止所做的。

public int NumberEval(int theNumber)
{
    int theResult = 0;
    switch (theNumber)
    {
        case 0:
            theResult = 1;
            break;
        case 1:
            theResult = 1;
            break;
        case 2:
            theResult = 200;
            break;
        case 3:
            theResult = 300;
            break;
        case 4:
            theResult = 400;
            break;
        case 5:
            theResult = 500;
            break;
        case 6:
            theResult = 600;
            break;
        case 7:
            theResult = 700;
            break;
        case 8:
            theResult = 800;
            break;
        case 9:
            theResult = 900;
            break;
        case 10:
            theResult = 1000;
            break;
        case 11:
            theResult = 1100;
            break;
        case 12:
            theResult = 1200;
            break;
        case 13:
            theResult = 1300;
            break;
        case 14:
            theResult = 1400;
            break;
        case 15:
            theResult = 1500;
            break;
        case 16:
            theResult = 1600;
            break;
        case 17:
            theResult = 1700;
            break;
        case 18:
            theResult = 1800;
            break;
        case 19:
            theResult = 1900;
            break;
        case 20:
            theResult = 2000;
            break;
        default:
            break;
    }
    return theResult;
} 

我的问题是如果我输入 50 那么它应该是 5000 怎么办。有没有办法简化这个方法,因为我不想手动编码 switch 语句中的每个项目?或者甚至是一个数学方程?

【问题讨论】:

  • 乘以 100?
  • ... 除非 theNumber == 1== 0,在这种情况下只返回 1(除非这是您的问题中的拼写错误?)。为了将来参考,您应该问自己的第一个问题是“我怎么知道我想要返回什么?”也就是说,是什么让你认为如果theNumber == 9 你应该返回 900?如果你这样做了并且想出了“因为 9 * 100 = 900”,那会给你一个提示,告诉你如何在不硬编码每个答案的情况下解决这个问题。
  • 一定要用开关吗?
  • 和一些溢出的值需要进位 int

标签: c# numbers


【解决方案1】:

这不是输入*100的模式吗?我认为您可以编写一个接受输入并将其乘以 100 的方法。但是需要注意的是精度截断,而输入大到足以溢出整数精度。

【讨论】:

  • 您好,谢谢您的提示,但我该如何避免。我是编程新手,所以我不太了解整数精度。
【解决方案2】:

为什么不与100 进行简单的乘法,如下所示:

public int NumberEval(int theNumber)
{
    if(theNumber == 0 || theNumber == 1)
       return 1;
    else
       return theNumber * 100;
}

这是给你的working example。您可以像这样简化语句:

return theNumber == 0 || theNumber == 1 ? 1 : theNumber * 100;  

【讨论】:

  • 非常感谢先生,这就是我要找的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多