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输出的问题相关推荐

  1. 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 ...

  2. Java入门之7:Java中的float和double类型的浮点数是怎么按照IEEE 754标准存储的?

    前言: 这篇博文,我写了好几天--,里面涉及的基础概念比较多,内容比较多,举例也比较多,想搞清楚明白就难免 我自己都会觉得啰嗦,我整理了目录出来,看完需要一点时间,可以自行根据需要.感兴趣的 选择阅读 ...

  3. arduino语言c,Arduino编程基础(二)——C\C++语言基础(上)

    基础篇 本章开始,将由浅入深,详细介绍开发Arduino Uno所需的基础知识与开发方法. Arduino语言 Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种 ...

  4. python的浮点数_python中浮点数的精度

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python中,浮点数运算,经常会碰到如下情况:? 出现上面的情况,主要还是因浮 ...

  5. c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明

    c语言中浮点数和整数转换 C中的数据类型 (Data Types in C) There are several different ways to store data in C, and they ...

  6. c语言带默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

    (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() 函数 ...

  7. c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

    描述 (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() ...

  8. c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...

    #include #include /* fabs */ #ifdef _WIN32 // #include #endif //输出的数值不断递增,即使将10改成10.0,循环也没有中止,为什么? v ...

  9. openwrt web中文语言支持,并设置默认中文

    OPENWRT WEB中文语言支持,并设置默认中文 在menuconfig中先选择支持luci-i18n-zh_ch 然后修改配置文件: 修改配置文件,配置默认中文 vim feeds/luci/mo ...

最新文章

  1. js数组中的splice()方法
  2. CAS 之 集成RESTful API
  3. 第七章 脚本参数的传递
  4. 人工智能大幕开启 安防行业已成先头部队
  5. 在ubuntu上搭建LNMP服务器
  6. python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算
  7. centos清楚缓存
  8. [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法
  9. 1473. A + B 格式
  10. 今日头条下拉词框怎么做的呢?怎么优化推广呢?
  11. 【交通标志识别】基于matlab GUI SIFT交通标志识别【含Matlab源码 864期】
  12. JAVA生成企业组织机构代码、营业执照代码、税务登记号码、统一社会信用代码并校验
  13. Origin抗锯齿和出现大C
  14. LeetCode Problems 903
  15. AICC 2021,这些AI热门话题你一定要知道
  16. Modbus家族之 ASCII
  17. Spark数据倾斜解决方案(收藏级)
  18. phpexcel中文手册(转)
  19. 鼠标滑过显示红色禁用符号
  20. 大批明星出国避难,大批医生选择逆行,是时候改变我们的价值观了···

热门文章

  1. Vue 递归实现树形结构
  2. 关于Netty的一些理解、实践与陷阱
  3. 跟我一起写 Makefile(一)【转】
  4. LinkedList总结+数组栈Stack
  5. nodeJs express mongodb 建站(mac 版)
  6. 【转】窗口之间的主从关系与Z-Order
  7. 蚁群算法和简要matlab来源
  8. A*寻径算法新手入门(转载)
  9. 如何在多域下安装Exchang服务方法(二)
  10. android源生setting华为,Android 设置默认桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗等...