华氏温度和摄氏温度之间的转换,反之亦然,没有任何损失

Joh*_*ith 1 c#

问题是我有一个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.但是我如何获得与以前相同的价值?

是否有任何已知的解决方案可以来回转换任何双值以保持相同的值?

Jon*_*nna 7

(让我们说26.67)

不要吧.

你不能用"让我们说"开始计算,并期望结果准确.实际上,26.67°C 恰好是 80.006°F(没有舍入误差),所以从那一点开始就没有可能获得更精确的结果.

不要"让我们说"; 尽可能精确地存储您的结果,与显示它们的代码分开,并在最后一刻进行舍入以便显示.

仍然存在不准确性,因为有些值不能精确地适应double(或decimal任何其他类型),但是你会受到它们的影响较少,并且通常根本不会看到效果即使他们在那里.