⑴ c语言双精度的写法问题 c里面怎么把1.0写成双精度是写成1.d0吗
如果要将双精度常量存入变量中,那么变量的类型一定要声明为双精度,也就是double,如
double i = 1.0;
你的写法是有问题的,C中带小数点的数默认是双精度的,所以你后面的写法是多余的,但是
float i = 1.0;
至少会给出警告,需要
float i = 1.0f;
不知道你为什么要使用双精度,因为能使用单精度就应该使用单精度,双精度不是仅仅增加了精度,而且还会增加计算机的运算时间和存储空间。
应该就这些,希望我说清楚了。
⑵ C语言中用scanf输入双精度浮点数
C语言中用scanf输入双精度浮点数的源代码如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, *a, i;
printf("请输入数组长度:");
scanf("%d", &n);
a = malloc(sizeof(int) * n); /*分配内存*/
printf("请输入%d个数: ", n);
for(i = 0; i < n; i++)
scanf("%d", a + i);
printf("您输入的数是: ");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
free(a); /*释放内存*/
return 0;
}
(2)c语言双精度写法扩展阅读
1、scanf()函数开始每次读取一个输入字符,它跳过空白字符直到遇到一个非空白字符。因为它试图读取一个整数,所以scanf()期望发现一个数字字符或者一个符号(+或-)。
2、如它发现了一个数字或一个符号,那么它就保存之并读取下一个字符。scanf()持续读取和保存字符直到它遇到一个非数字的字符。如遇到了一个非数字的字符,它就得出结论,它已经讲到了整数的尾部。
3、scanf()把这个非数字字符放回输入。这就意味着程序下一次开始读取输入时,它将从前面被放弃的那个非数字字符开始。最后,scanf()计算它读取到的数字的相应数值,并将该值放到指定的变量中。
⑶ C语言中单精度浮点数和双精度分别如何表示有什么差别
C语言中,单精度浮点型为float, 双精度浮点型为double。
Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字。
double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字。
二者区别:
占用字节空间不同。
一个float变量占用四字节,一个double类型变量,一般占用8字节。表示范围不同。
float表示范围为-3.4E-38~3.4E+38。double 表示范围为-1.7E-308~1.7E+308。
精度不同。
float在表示十进制时,有效数字为6到7位。double在表示十进制时,有效数字为15到16位。输入输出格式不同。
在C语言中,输入输出格式化字符串,float使用%f,而double使用%lf。
⑷ c语言里单精度和双精度怎么理解
单精度和双精度顾名思义是两种精度的不同划分,单精度float是保证7位有效数字,double是保证16位有效数字。
例:(float)(10%3)
结果是1.000000即七位有效数字,(后面不一定全是0,计算机可随机选择数字,所以整数1不等于float或double的1)
(double)(10%3)
同理结果是:1.XXXXXXXXXX……后面有十五位的有效数字
虽然整数位都是1,但由于有效位数不同,即后面随机派出的小数可能不同,所以二者理论上不同,实际比较不能用==,要用fabs()<1e-6.
⑸ C语言里 单精度型与双精度型怎么表示是什么样子
单精度是float
双精度是double
都是浮点型,所谓浮点就是只能表示近似值,不能表示准确值,最后的几位小数是不准确的。
如:
#include<stdio.h>
void main()
{
double a=2.9999999;
printf("%f ",a);
a=2.99999998;
printf("%f ",a);
a=2.99999997;
printf("%f ",a);
a=2.99999996;
printf("%f ",a);
a=2.99999995;
printf("%f ",a);
printf("%\n ");
//输出结果都是3.000000
a=2.9999949;
printf("%f ",a);
a=2.9999948;
printf("%f ",a);
a=2.9999947;
printf("%f ",a);
a=2.9999946;
printf("%f ",a);
//输出结果都是2.999995
}
⑹ C语言中,要使用双精度浮点型(double)数据该怎样写我用的是WinTC整型要写int main()和%d
#include <stdio.h>
int main(){
double a,b;
scanf("%lld",&a,&b);
printf("%lld\n",a+b);
return 0;
}
用上面的程序测试一下,如果不行的话,把%lld改成%I64d(这里是大写的i,前面是小写的L);
不同的编译器,用的不一样。。不过大多数两种都行。
⑺ C语言如何输入双精度数据
C语言用scanf()函数输入双精度数据时,采用的数据格式参数必须是%lf,如:
doubled;
scanf("%lf",&d);
scanf("%f,%f",&a,&b);不能输入双精度数据吗?
当然不能。主要原因在于double和float类型的大小不同:
double类型数据在内存中存储占8字节(64位),按IEEE754标准存储,格式为:1位符号位+11位指数位+52位小数位
float类型数据在内存中存储占4字节(32位),按IEEE754标准存储,格式为:1位符号位+8位指数位+23位小数位
当输入数据格式串为%f时,scanf()按float类型将输入的数据存储到内存地址中,这时,若再按double类型解释输出数据时,数据当然不是用户输入的内容了。
⑻ C语言如何输出双精度浮点型数据
1.双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf ",x);
2.short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d ",a);
例:
#include <stdio.h>
int main()
{double x;
short int a;
printf("%lf",x); // 输入double型
printf("%d",a); //输入短整型
return 0;
}
(8)c语言双精度写法扩展阅读:
C语言特有特点
1.C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
2.C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
3.不同的变量类型可以用结构体(struct)组合在一起。
4.只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
5.部份的变量类型可以转换,例如整型和字符型变量。
6.通过指针(pointer),C语言可以容易的对存储器进行低级控制。
7.预编译处理(preprocessor)让C语言的编译更具有弹性。
⑼ c语言中什么是单精度型和双精度型各举个例子。。。
单精度型和双精度型的区别在于它们的精确程度不一样,也就是小数部分的有效位数不一样。
单精度数(float型)在32位计算机中存储占用4字节,也就是32位,有效位数为7位,小数点后6位;双精度数(double型)在32位计算机中存储占用8字节,也就是64位,有效位数为16位,小数点后15位。
比如3.1415926535897932384这个小数,如果定义成float型,那么只会留下小数点后5位,也就是3.141592,如果定义成double型,那么只会留下小数点后15位,也就是3.141592653589793。
(9)c语言双精度写法扩展阅读
计算机的数都是以二进制进行存储。无论是单精度浮点数还是双精度浮点数,在计算机上的存储都遵循IEEE 754规范,使用二进制科学计数法。
二进制科学计数法包含三个部分:符号位,指数位和尾数部分。单精度数的符号位,指数位和尾数部分分别为1,8,23,而双精度为1,11,52。
而单双精度中的精度就主要取决于尾数部分的位数。float的尾数尾数为23位,除去全部为0的情况以外,最小为2的-23次方,因此float小数部分只能精确到后面6位。类似的,double尾数位数为52,最小为2的-52次方,因此只能精确到小数点后15位。
⑽ C语言双精度数字
双精度浮点数(Double)用来表示带有小数部分的实数,一般用于科学计算,用8个字节(64位)存储空间,其数值范围为1.7E-308~1.7E+308,双精度浮点数最多有15或16位十进制有效数字,双精度浮点数的指数用“D”或“d”表示。
双精度浮点数科学记数法格式 :±aD±c或±ad±c
复制于网络