C语言中如何用实验的方法确定double型浮点数能精确到多少位小数?

如题所述

可以通过定义一个double型的变量,并对变量进行赋值,之后输出该变量的值即可。


下面举例来具体说明:

double f = 3.141592653589;
printf("%lf", f);

实验结果输出3.141593,说明double型能精确到小数点后6位。


注:该测试是在32位计算机中的VS2010环境下运行的,具体的精确度还要考虑计算机的位数与编译环境。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-05
#include"stdio.h"
int main()
{
    printf("%.50lf\n", 1.0/3.0 );  //超过一定位数,显示的就是错误的了,这样可以看出double的精确度 
    return 0;
}

追问

我在网络上查有的是不确定,有的是六位。而我试出来是15位,怎么回事呢?

追答

float是6-7位
double是15-16位

追问

请问为什么是个范围呢?

追答

用double来说啊:
double的范围有两层意思
一个是能表示的数据的大小范围 这是个非常宽的范围(网上说的基本都是这个范围)
一个是能表示的精确的有效的数据的范围 这个只能用有效数字到说,我记不太清楚了。

追问

不是啦,我是说为什么精确度是15-16位这个范围,而不是一个准确的值呢?

追答

如果要知道详细可以查阅一下IEEE754标准,看懂之后,你可能能得到答案,我真三言两语讲不清楚。

本回答被提问者和网友采纳
第2个回答  2015-05-23
根据打印的结果我们可以判断位数的,如果超过一定位数,显示的就是错误的了,这样可以看出double的精确度 。例子程序如下:
#include"stdio.h"
int main()
{
printf("%.50lf\n", 1.0/3.0 );
return 0;
}
第3个回答  2019-01-25
转换类型有这个语句的,比如我设个float
x
如果我想把这个变量转换成double
就可以这样写
(double*)x
公式为(要转换的类型*)变量,记住就可以了,以后什么都能转换,这叫强制转换
第4个回答  2014-09-22
最简单的 1÷3= 数一下有多少位小数

C语言里,double类型的数据可以精确到小数点后几位?
C语言里面,默认%f是小数点后6位,如果想小数点后面16位,写成%.16lf,不会自动四舍五入的,double是一个近似值,通常没有办法做的很精确。通常能精确到小数点后面5,6位,也就是说超过5,6位了可能就不准了。1、double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = ...

c语言float和double保留小数点后几位
C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以0补齐,超过六位按四舍五入截断)。如果想小数点后面16位,写成%.16lf,不会自动四舍五入的,double是一个近似值,通常没有办法做的很精确。通常能精确到小数点后面5,6位,也就是说超过5,6位了...

C语言编程序时怎么控制浮点型输出的小数点精确到几位
使用输出格式说明符来指定精确到小数点位数。如:void main(){ float a=345.234678;printf("%.3f\\n", a) ;} 其中%.3f里的3就表示输出精确到小数点后3位。所以可参考的形式是printf("%m.nf",p);m.nf,指定输出的数据共占m列,其中有n位是小数。如果数值长度小于m,则左端补空格,若数值...

C语言中,float与double中的有效位?
double双精度型,在内存中占8个字节(64位),有效数字是15位十进制数字 有效数字是7位十进制数字,小数点算一位,小数点后6位

C语言中double数据类型的有效数据范围是多少?
双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是:1.7x10^-308 ~ 1.7x10^308。IEEE754为其定制标准。C语言中,双精度浮点(double)型,占8 个字节(64位)内存空间。其数值...

c语言中双精度浮点数(即double类型数据)的取值范围
双精度浮点数在计算机中的存储方式为:一位符号位 s 11位指数位 E(移码表示,范围为:e=-1024到1023)52位小数位 f 共计64位,8个字节 所表示的规格数为:1.f * 2^e ,1.f 约等于2 (1.1111111111111111111...=2 )能表示的最小数约等于 -2*2^1023=2^1024 能表示的最大负数约...

c中的float和double的有效数字和精度各是多少?
double类型:有效数字:通常为15\\~16位。精度:能精确到小数点后14\\~15位。但实际的精度和有效数字可能会因具体实现和编译器而异。详细解释:在C语言中,float和double是用于表示浮点数的数据类型。它们的名称分别表示单精度浮点数和双精度浮点数。它们的有效数字和精度反映了它们能够表示的数字范围和精确...

c语言中double默认多少位有效数字
C语言中double默认输出 6 位小数(不足六位以 0 补齐,超过六位按四舍五入截断),可以根据自己的需要去修改输出的位数,例如输出两位小数:(%2lf)。double可以表示十进制的15或16位有效数字。

c语言中double怎么表示小数呢?
c语言里面,默认%f是小数点后6位,如果想小数点后面16位,写成%16lf不会自动四舍五入的,double是一个近似值,通常没有办法做的很精确,通常能精确到小数点后面6位,也就是说超过6位可能就不准了。printf("%.2f",a); 保留小数点后两位:要保留1位小数点:printf("%.1f",a)。要保留2位小数...

C语言中的double是最多多少位?
C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补齐,超过六位按四舍五入截断)。double a = 1;printf("%lf\\n", a);输出会是:1.000000 比如计算平均分,一到两位小数就足够了。可是有时六位又不够,需要更多位小数,比如计算高精度平方...

相似回答