use*_*487 0 c# asp.net visual-studio-2010
我正在尝试使用Visual Studio 2010中的C#ASP.net网络表单将摄氏温度转换为华氏温度.
我正在使用函数来执行转换,包括以下代码行:
return (celsius * (9 / 5)) + 32;
它不算正确!如果我输入摄氏度= 16,我得到48.
我已经尝试在PHP中做同样的事情 - 我得到60,这是我想要得到的.
知道这里有什么不对吗?
您将看到9 / 5以整数算术进行求值,给出值1.所以基本上您的表达式只是添加16.
你想要的东西:
// Force the 9.0 / 5.0 to be evaluated as a double
return (celsius * (9.0 / 5.0)) + 32;
Run Code Online (Sandbox Code Playgroud)
或者只需更改评估分组,您就可以保持整数运算:
return ((celsius * 9) / 5) + 32;
Run Code Online (Sandbox Code Playgroud)
如果您的输入和预期输出是整数,我会选择后者.显然现在有更大的溢出风险...但只有非常高的温度:)
请注意,这将始终向下舍入- 如果您想要达到最接近的值,您可能仍希望仍然使用浮点执行算术,然后应用舍入,例如
return (int) (Math.Round((celsius * (9.0 / 5.0)) + 32));
Run Code Online (Sandbox Code Playgroud)
请注意,这将使用银行家的舍入(舍入到偶数)来表示两个整数之间的中点.
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |