问题是我有一个double代表华氏温度单位的值
var fahrenheit = 80.0;
Run Code Online (Sandbox Code Playgroud)
要将其转换为摄氏度,我使用公式
var celsius = (fahreheit - 32.0) / 1.8;
Run Code Online (Sandbox Code Playgroud)
它给出了一个数字26.666667(让我们说26.67)
当我把它转换回来
var fahrenheitAgain = 1.8 * celsius + 32.0;
Run Code Online (Sandbox Code Playgroud)
如果我有2位小数80.006,它会给出一个更高的数字80.01.但是我如何获得与以前相同的价值?
是否有任何已知的解决方案可以来回转换任何双值以保持相同的值?
(让我们说
26.67)
不要吧.
你不能用"让我们说"开始计算,并期望结果准确.实际上,26.67°C 恰好是 80.006°F(没有舍入误差),所以从那一点开始就没有可能获得更精确的结果.
不要"让我们说"; 尽可能精确地存储您的结果,与显示它们的代码分开,并在最后一刻进行舍入以便显示.
仍然存在不准确性,因为有些值不能精确地适应double(或decimal任何其他类型),但是你会受到它们的影响较少,并且通常根本不会看到效果即使他们在那里.