tom*_*kid -1 c# floating-point
var v1 = propertyInfo.GetValue(actor);
var v2 = propertyInfo.GetValue(blueprint);
bool isActorValueSame = v1 == v2;
Run Code Online (Sandbox Code Playgroud)
每当我尝试比较v1和v2时 - 即使v1和v2都等于500.0f,我也会收到错误的布尔值.任何想法为什么会这样?我知道比较两个浮点数是不安全的,因为浮点不准确,但我的值都是100%相等.
因为propertyInfo.GetValue(blueprint);
返回对象和对象是引用类型所以相等的运算符总是会让你错误.在比较前尝试铸造
var v1 = (float)propertyInfo.GetValue(actor);
var v2 = (float)propertyInfo.GetValue(blueprint);
bool isActorValueSame = v1 == v2;
Run Code Online (Sandbox Code Playgroud)
看一看MSDN文档这里关于更详细的PropertyInfo.GetValue
方法
归档时间: |
|
查看次数: |
124 次 |
最近记录: |