C# 中,0.1 在什么情况下不等于 0.1 ?
var v = 0.1f;
if (v == 0.1)
{MessageBox.Show("ok");
}以上代码,在c# 中永远也不会弹出 ok 的提醒,因为:

等价于:
if ( 0.1f == 0.1d )
等价于:
if ( (float)0.100000001 == (double)0.10000000000000001 )
等价于:
if ( (double)0.10000000149011612 == (double)0.10000000000000001 )
因此,v!=0.1
因此,使用时要修改为:if ( v == 0.1f ) , 而不是 if ( v == 0.1 )
测试代码:
var v = 0.1f;
var d = 0.1;// 显示实际存储的值
Debug.WriteLine($"v (float) 的实际值: {v:G30}");
// 输出:v (float) 的实际值: 0.10000000149011612
Debug.WriteLine($"d (double) 的实际值: {d:G30}");
// 输出:d (double) 的实际值: 0.10000000000000001
// 显示类型转换后的值
Debug.WriteLine($"v 转换为 double: {(double)v:G30}");
// 输出:v 转换为 double: 0.10000000149011612
// 比较
Debug.WriteLine($"v == 0.1: {v == 0.1}"); // false
Debug.WriteLine($"v == 0.1f: {v == 0.1f}"); // true