问题是我有一个表示华氏单位的double
值
var fahrenheit = 80.0;
要将其转换为摄氏温度,请使用以下公式
var celsius = (fahreheit - 32.0) / 1.8;
它给出一个数字
26.666667
(假设26.67
)当我转换回来
var fahrenheitAgain = 1.8 * celsius + 32.0;
如果我有2个小数位,它将给出一个较大的数字
80.006
,该数字会四舍五入为80.01
。但是我如何获得与以前相同的价值?是否有已知的解决方案来回转换任何双精度值以始终具有相同的值?
最佳答案
(假设26.67
)
不要吧。
您不能以“假设”开始计算,而期望结果是准确的。实际上,26.67°C恰好是80.006°F(无舍入误差),因此从那一点开始,没有任何办法可以得到更精确的结果。
不要做“让我们说”。尽可能精确地存储结果,与显示结果的代码分开,仅在最后一刻才显示。
仍然会存在误差,因为有些值不能精确地适合double
(或decimal
或任何其他此类类型),但是您会受到它们的影响较少,并且通常会赢得效果即使他们在那里也根本不可见。
关于c# - 华氏温度和摄氏温度之间的转换,反之亦然,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30487855/