博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++ pow()函数结果强制类型转换为整型的误差分析
阅读量:3899 次
发布时间:2019-05-23

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

今天写一道题,差点被这个给坑死了。。。

在计算102时调用pow(10 , 2),再强制类型转换为int类型后输出:

printf("%d",(int)pow(10,2));

得到的结果却是:99

这是因为 double pow(double x, double y) ,返回值是采用数值逼近的方法得到的double类型值。例如返回值为99.9999999时,强制类型转换发生截断,得到99。

解决方法①:自行编写 pow() 函数,以整型作为形参与返回值。

解决方法②:运用四舍五入函数:

printf("%d",(int)round(pow(10,2)));

因为pow()函数得到的结果本身已经十分接近,四舍五入后通常可以得到精确值。

转载地址:http://uyfen.baihongyu.com/

你可能感兴趣的文章
关于Json格式的理解
查看>>
c语言解析json数据
查看>>
一个C实现的记日志的函数库
查看>>
C语言简单实现日志功能的的题目
查看>>
C 实现的 日志模块
查看>>
C语言实现简单的分级别写日志程序
查看>>
深入理解HTTP Session
查看>>
理解TCP中的三次握手
查看>>
linux session 浅谈
查看>>
Emacs 中文学习手册-1
查看>>
Emacs学习笔记(1):初学者的学习计划
查看>>
Emacs学习笔记(13):在Emacs中打开pdf
查看>>
Emacs学习笔记(14):在Emacs中使用git
查看>>
Emacs for vim Users---from http://www.crazyshell.org/blog/
查看>>
静态库和动态库链接那些事--http://www.crazyshell.org/blog/?p=50
查看>>
一年成为Emacs高手(像神一样使用编辑器) .--http://blog.csdn.net/redguardtoo/article/details/7222501
查看>>
GNU make 指南
查看>>
配置 vim
查看>>
centos 安装emacs24
查看>>
【转】结构体中Char a[0]用法——柔性数组
查看>>