c语言对浮点数的处理默认是double吗,C语言中浮点数float和double输出的问题
C语言中浮点数float和double输出的问题
关注:260 答案:6 信息版本:手机版
解决时间 2019-01-12 07:33
斑駁影
2019-01-11 09:20
#includevoid main()
{
float num;
double dnum;
num=563.23;
dnum=78954327.07;
printf("num=%f",num);
printf("\ndnum=%lf",dnum);
}
执行结果:
num=563.229980
dnum=78954327.0700000
我想请问如上题,书上写float单精度浮点型提供7个有效数字,而double双精度浮点型提供15到16位有效数字。那怎么输出结果会是这样?位数是不是多了?请知道的大侠们帮帮忙,小女子先谢过了~
最佳答案
哼嘿闯九州
2021-01-13 11:38
类型 比特数 有效数字 数值范围
float 32 6-7 -3.4*10(-38)~3.4*10(38)
double 64 15-16 -1.7*10(-308)~1.7*10(308)
long double 128 18-19 -1.2*10(-4932)~1.2*10(4932)
简单来说,Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字;double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字(见我的double_float文件)
还有,有个例子:在C和C++中,如下赋值语句
float a=0.1;
编译器报错:warning C4305: 'initializing' : truncation from 'const double ' to 'float '
原因:
在C/C++中(也不知道是不是就在VC++中这样),上述语句等号右边0.1,我们以为它是个float,但是编译器却把它认为是个double(因为小数默认是double),所以要报这个warning,一般改成0.1f就没事了。
通常的做法,经常使用double,而不喜欢使用float。
参考 BBB33141159的回答
全部回答
1楼古灵精怪小妖精
2021-01-13 16:16
用%f和%lf
2楼卖樱桃的小丸子
2021-01-13 15:40
不管float,double,输出时小数点后默认都是6位
不过不知道 你的double怎么是7位。。。
3楼古灵精怪小妖精
2021-01-13 14:31
如果想让结果更精确的话就选double,如果结果只要求小数,精确度不要那么高,选
float就行了,小数点后两位的输出结果,double 是首
选
4楼作业被我养得白白的
2021-01-13 13:06
不要多想。
只要记得
float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位
可以参考:http://hi.baidu.com/yu_xiyan/blog/item/461482dbb32d0c6dd1164edf.html
写的比较清楚
5楼不要捏我脸啦
2021-01-13 12:16
这里有个概念要搞清楚,精度和输出小数点后多少位不是一回事。精度是说某种类型的浮点数在C中计算时有多少位是有效的,这实际上是包括整数部分的,但不包括小数点那一位;而输出小数点后多少位是由输出函数printf中的控制字符串确定的。float的精度是6到7位,就是说连整数部分有6位是可信的,再长了就是机器垃圾值了;double有16到17位是可信的,再多了也是机器垃圾值。下面的代码可说明这一问题。
float型x的值从第8位2开始就是垃圾值了,尽管要求输出小数点后10位;double型y的值从第18位起也是垃圾值,尽管要注输出了小数点后20位——这里全是0是碰巧,绝大多数情况下是乱七八糟的机器值。
我要举报
如以上问答内容为色情/暴力/低俗/不良/侵权等信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯
c语言对浮点数的处理默认是double吗,C语言中浮点数float和double输出的问题相关推荐
- C语言中关于float、double、long double精度及数值范围理解
IEEE754浮点数的表示方法.C语言里对float类型数据的表示范围为-3.4*10^38-+3.4*10^38.double为-1.7*10^-308~1.7*10^308,long double ...
- Java入门之7:Java中的float和double类型的浮点数是怎么按照IEEE 754标准存储的?
前言: 这篇博文,我写了好几天--,里面涉及的基础概念比较多,内容比较多,举例也比较多,想搞清楚明白就难免 我自己都会觉得啰嗦,我整理了目录出来,看完需要一点时间,可以自行根据需要.感兴趣的 选择阅读 ...
- arduino语言c,Arduino编程基础(二)——C\C++语言基础(上)
基础篇 本章开始,将由浅入深,详细介绍开发Arduino Uno所需的基础知识与开发方法. Arduino语言 Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种 ...
- python的浮点数_python中浮点数的精度
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python中,浮点数运算,经常会碰到如下情况:? 出现上面的情况,主要还是因浮 ...
- c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明
c语言中浮点数和整数转换 C中的数据类型 (Data Types in C) There are several different ways to store data in C, and they ...
- c语言带默认参数吗,嵌入式C语言可以带“默认参数”的函数吗
(文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() 函数 ...
- c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗
描述 (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() ...
- c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...
#include #include /* fabs */ #ifdef _WIN32 // #include #endif //输出的数值不断递增,即使将10改成10.0,循环也没有中止,为什么? v ...
- openwrt web中文语言支持,并设置默认中文
OPENWRT WEB中文语言支持,并设置默认中文 在menuconfig中先选择支持luci-i18n-zh_ch 然后修改配置文件: 修改配置文件,配置默认中文 vim feeds/luci/mo ...
最新文章
- js数组中的splice()方法
- CAS 之 集成RESTful API
- 第七章 脚本参数的传递
- 人工智能大幕开启 安防行业已成先头部队
- 在ubuntu上搭建LNMP服务器
- python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算
- centos清楚缓存
- [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法
- 1473. A + B 格式
- 今日头条下拉词框怎么做的呢?怎么优化推广呢?
- 【交通标志识别】基于matlab GUI SIFT交通标志识别【含Matlab源码 864期】
- JAVA生成企业组织机构代码、营业执照代码、税务登记号码、统一社会信用代码并校验
- Origin抗锯齿和出现大C
- LeetCode Problems 903
- AICC 2021,这些AI热门话题你一定要知道
- Modbus家族之 ASCII
- Spark数据倾斜解决方案(收藏级)
- phpexcel中文手册(转)
- 鼠标滑过显示红色禁用符号
- 大批明星出国避难,大批医生选择逆行,是时候改变我们的价值观了···
热门文章
- Vue 递归实现树形结构
- 关于Netty的一些理解、实践与陷阱
- 跟我一起写 Makefile(一)【转】
- LinkedList总结+数组栈Stack
- nodeJs express mongodb 建站(mac 版)
- 【转】窗口之间的主从关系与Z-Order
- 蚁群算法和简要matlab来源
- A*寻径算法新手入门(转载)
- 如何在多域下安装Exchang服务方法(二)
- android源生setting华为,Android 设置默认桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗等...