博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
那些年的坑--双精度数值转成整形
阅读量:7087 次
发布时间:2019-06-28

本文共 347 字,大约阅读时间需要 1 分钟。

  hot3.png

        关于语言内置类型的转换,平时写代码都是直接强转,有显式的,有隐式,一般都是不会出现问题。但是,这次确是遇到了一个问题,具体原有还是跟浮点数使用二进制表示法有关,有些数很难直接表示出来,就像代数中的1/3的结果永远表示不完一样。

上面就上代码(VS2010 win7 32位)

int  main(){    double f1 = 8.45;	double f2 = f1;	int i1 = (int)(f2 * 100);	printf("%d", i1);}

输出的结果:844

通过vs的监视器查看

解决方法是在转整形之前加上正负0.000001

浮点数二进制表示可参考  阮一峰的浮点数的二进制表示

转载于:https://my.oschina.net/ikel/blog/707621

你可能感兴趣的文章
Java 连接、操控数据库总结(JDBC)
查看>>
【算法】斐波那契数列
查看>>
安装WindowBuilder后,新建JFrame文件,不能查看Design
查看>>
CSS3 动画-- 鼠标移上去,div 会旋转、放大、移动
查看>>
CentOS 7----Apache基于域名的虚拟主机配置
查看>>
ReactiveCocoa入门-part1
查看>>
maven之一:maven安装和eclipse集成
查看>>
趣味理解:三层架构与养猪
查看>>
Microsoft JET Database Engine (0x80004005)未指定的错误解决
查看>>
Minimum Inversion Number
查看>>
Line belt
查看>>
captive portal
查看>>
Let's encrypt申请泛域名证书以及报错处理
查看>>
centos6.5 安装jdk7和tomcat7
查看>>
linux 的diff 命令
查看>>
蜘蛛纸牌存档文件,修改分数
查看>>
Windows系统环境下创建mysql主从数据库方法(双向主从复制)
查看>>
apache shiro的工作流程分析
查看>>
bzoj1878[SDOI2009]HH的项链
查看>>
在vue2.0中使用sass
查看>>