我有VT_R4 / float类型的变体,值为" 2.550000"当使用VariantChangeType()将其转换为double时,VT_R8 / double类型值变为" 2.54999999998"。
::VariantChangeType(&var, &var, 0, VT_BSTR);
::VariantChangeType(&var, &var, 0, VT_R8);
double dOutputValue = var.dblVal;
使用
四舍五入时的双倍output.Format(_T("%3.1f"), dOutputValue);
给出值2.5,而不是预期的2.6。
请建议。
答案 0 :(得分:1)
我有VT_R4 / float类型的变体,值为" 2.550000"。
不,你没有。该值在二进制浮点类型中不能完全表示。 closest single precision value to 2.55是:
2.5499999523162841796875
如果您希望准确表示2.55,则需要使用十进制数据类型而不是二进制数据类型。