c语言双精度浮点数,使用C语言的十进制(浮点数,双精度)

5-810-jpg_6-1080-0-0-1080.jpg

小数点分为整数部分和小数部分,它们之间用点分隔. 例如,0.0、75.0、4.023、0.27,-937.198 -0.27等都是合法的小数. 这是最常见的小数形式. 这称为十进制形式.

此外,十进制数也可以采用指数形式,例如7.25×102、0.0368×105、100.22×10-2,-27.36×10-3等. 任何十进制数字都可以用指数形式表示.

C语言支持两种十进制形式. 但是在撰写本文时,C语言的指数形式不同于数学形式.

C语言中小数的指数形式为:

aEn或aen

a是尾数部分,是十进制数字; n为指数部分,为十进制整数; E或e是用于分隔尾数部分和指数部分的固定字符. 整个表达式等于a×10n.

指数形式的小数示例:

在C语言中,通常使用两种类型的小数,即float或double. float被称为单精度浮点类型,double被称为双精度浮点类型.

与整数不同,小数没有太多的飞蛾,小数的长度是固定的,浮点数始终占用4个字节,双精度数始终占用8个字节. 十进制输出小数也可以使用printf函数输出,包括十进制形式和指数形式,其对应的格式控制字符为:

2014012623234440204.jpg

以下代码演示了小数的表示形式和输出:

#include

#include

int main()

{

float a = 0.302;

float b = 128.101;

double c = 123;

float d = 112.64E3;

double e = 0.7623e-2;

float f = 1.23002398;

printf("a=%e \nb=%f \nc=%lf \nd=%lE \ne=%lf \nf=%f\n", a, b, c, d, e, f);

return 0;

}

运行结果:

a = 3.020000e-01

b = 128.100998

c = 123.000000

d = 1.126400E + 05

e = 0.007623

f = 1.230024

1-365-jpg_6_0_______-836-0-147-836.jpg

代码说明:

1)默认情况下,%f和%lf保留六个小数位. 少于6位数字用0填充,多于6位数字被舍入.

2)将整数分配给float变量时,它变为小数.

3)以指数形式输出小数时,输出结果为科学计数法;也就是说,尾数部分的值是: 0≤尾数<10.

4)b的输出结果令人困惑,只有小数点后三位,为什么不能准确输出,但输出一个近似值?这与内存中小数的存储形式有关. 许多简单的小数位数无法准确存储,因此无法准确输出. 我们将在下一节“如何将小数存储在内存中,揭示诺贝尔奖级别的设计(详细地讲,请详细解释).

此外,还有一种更智能的输出小数的方式,即使用%g. %g比较小数的十进制和指数形式,并以最短的方式输出小数,以使输出更简洁. 所谓的最短字符是输出最少的字符.

%g用法示例:

#include

#include

int main()

{

float a = 0.00001;

float b = 30000000;

float c = 12.84;

float d = 1.229338455;

printf("a=%g \nb=%g \nc=%g \nd=%g\n", a, b, c, d);

return 0;

}

运行结果:

d49f3e5b79114b07ac13da0800758134.gif

a = 1e-05

b = 3e + 07

c = 12.84

d = 1.22934

每个小数点的分析:

读者应注意的两点是:

简而言之,%g应该以最短的方式输出小数,并且小数部分的行为自然,不加零c语言 float范围,并且比%f和%e更灵活,这在大多数情况下都符合用户习惯

除%g外,还有%lg,%G,%lG: 后缀为数字的数字有默认类型: 对于整数,默认为int类型;对于整数,默认为int类型. 对于小数,默认为双精度类型.

请参见以下示例:

4-810-jpg_6-1080-0-0-1080.jpg

long a = 100;

int b = 294;

float x = 52.55;

double y = 18.6;

两个数字100和294默认情况下为int类型. 将a分配为100时,您必须先将int转换为long,而不必将294转换为b.

默认情况下,两个数字52.55和18.6的类型为double. 要将52.55分配给x,您必须先将double转换为float,然后将18.6分配给y而不进行转换.

如果您不希望数字使用默认类型,则可以在数字后缀后手动指定类型:

请参见以下代码:

long a = 100l;

int b = 294;

short c = 32L;

float x = 52.55f;

double y = 18.6F;

float z = 0.02;

添加后缀. 尽管数字的类型已更改,但这并不意味着只能将数字分配给指定的类型. 只要执行类型转换,它仍然可以分配给其他类型.

对于初学者来说,很少使用数字后缀. 无论是否添加它c语言 float范围,通常都相同,也不会影响实际编程,但是由于您已经学习了C语言,因此您仍然需要了解这一知识点. 代码是通过这种方式使用的,但是您不知道发生了什么,这很尴尬. 关于数据类型的转换,我们将在“ C语言数据类型转换”部分中深入讨论. 互相分配小数和整数在C中,可以互相分配整数和小数:

请参见以下代码:

#include

int main(){

float f = 251;

int w = 19.427;

int x = 92.78;

int y = 0.52;

int z = -87.27;

printf("f = %f, w = %d, x = %d, y = %d, z = %d\n", f, w, x, y, z);

return 0;

}

运行结果:

f = 251.000000,w = 19,x = 92,y = 0,z = -87

由于将十进制数分配给整数类型将被“扭曲”,因此编译器通常会发出警告以引起您的注意.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-176452-1.html

相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值