Format显示为-0.000

8 篇文章 0 订阅

转载自:Format显示为-0.000

现象

  在VC开发中我们常用CString的Format函数来把int,float,double等类型数据转换为字符串类型。在浮点数据的转换中经常为出现“-0.000”这样的字符串,难道Format函数对数据的符号位有什么特殊处理?

原因
  经过分析发现,并非Format函数有什么特殊,而是浮点数转换精度截断造成的假象,如所示:

double dVal = -0.0001;
CString strVal;
strVal.Format(_T("%.3lf"), dVal); // strVal会显示为“-0.000”

%.3lf表明保留dVal三位小数,-0.0001保留三位小数就变成了-0.000,所以strVal就成了“-0.000”

方案
  为了避免出现0还带正负号的情况,就需要在格式化后再做一次处理。

double dVal = -0.0001;
CString strVal;
strVal.Format(_T("%.3lf"), dVal); // strVal会显示为“-0.000”
if ( _T("-0.000") == strVal )
   strVal = 0.000;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值