例如
double x = -1;
TrySetX(ref x);
if(x == -1)
//since x == -1, it obviously wasn't set
TryADifferentWayToSetX(ref x);
Use(x);
在x不变的情况下,x == -1总是返回true,还是我必须使用epsiolon进行比较?
这里的逻辑是,两个文字都可能会被转换为相同的值,因此无需担心它们可能会失去精度。
答案 0 :(得分:0)
尝试一下,看起来两个文字都转换为相同的值。因此,比较是安全的:
这是我写的一个小测试
public class Program
{
public static void Main(string[] args)
{
double x = 3.455678756567656765677812345678912345678901234567890123456789009876543223456798765423456709876512345;
System.Console.WriteLine(x);
System.Console.WriteLine(x == 3.455678756567656765677812345678912345678901234567890123456789009876543223456798765423456709876512345);
}
}
该数字足够长,精度会损失很多,但是会打印
3.45567875656766
True
因此确实存在精度损失,但是比较仍然有效。