所以我有一个包含数字值的CString,例如" 45.05"我希望将这个数字四舍五入到小数点后一位。
我使用这个功能
_stscanf(strValue, _T("%f"), &m_Value);
将值放入浮点数,我可以舍入。但是在45.05的情况下,我得到的数字是45.04999 ...其中一轮预计为45.1
如何从CString中获取正确的值?
TIA
答案 0 :(得分:2)
如果您需要字符串结果,最好的办法是找到小数点并检查它后面的两位数,然后用它们来计算舍入结果。如果你需要一个浮点数,那么......由于45.1无法准确表示,所以它毫无希望。
编辑:你可以用算术来计算floor(x*10+0.5)/10
,但是知道用45.05这样做不会导致45.1。
答案 1 :(得分:1)
您可以分别提取构成百分位和以下位置的数字,将它们转换为数字并将其单独舍入,然后将其添加到数字的其余部分:
“45.05”= 45.0和0.5十分之一(0.5可以用二进制表示)
回合0.5十分之一到1
45.0 + 1十分= 45.1
不要将此与仅分别处理小数位置混淆。 “45.15”不分为45和.15,它分为45.1和0.5分。
答案 2 :(得分:0)
我有一段时间没有使用过c ++,但这是我要采取的步骤。