c语言 float型数据输入需要注意啥吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 float型数据输入需要注意啥吗相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void main()
double func( float x,float y);
float a,b,c;
scanf("%d %d",&a,&b);
c=func(a,b);
printf("%f\n",c);

double func(float x,float y)
return (x+y)

这个很简单的程序输出就是不对

    float型数据输入时需注意和double类型的区别。

    float的输入和输出是用%f的。
    double的输入和输出是用%lf的。
    如果把float改成double,需要把原来的%f改成%lf,才可以的。

    注意float型数据的数据范围,及精度范围,数据过大时会发生溢出,应采用更大的double类型。

    float是单精度浮点型,而double是双精度浮点型,二者在机器内所占字节数不一样,精确度也不一样,double型精度更高些!float 4字节 double 8字节 float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
      float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

参考技术A #include<stdio.h>
void main()
 double func( float x,float y);
  float a,b,c;
  scanf("%d %d",&a,&b);  //输入格式错了 ,应该是%f
  c=func(a,b);
  printf("%f\\n",c);

double func(float x,float y)
return (x+y)

追问

短路了哈哈~多谢!

本回答被提问者采纳
参考技术B 如果用float最好不要用double返回追问

那用什么好呢?

追答

要不全部用float,要不全部用double;而且你的return (x+y)没有分号

c语言中int 和float 形数据的限制是多少?

我在C 语言中编程时出现大数据时 (就5 为数以上)运行的结果是0或者是其他错误答案,这是为什么啊?printf语句中的 %.2f , %7.2f ,%0f ,%1f,%2f等这些形式的数据有什么区别?

c语言标准库提供了limits.h和float.h用于说明整数和浮点型数据的限制。

limits.h:用于检测整型数据数据类型的表达值范围。 

float.h :提供了浮点型的范围和精度的宏,该头文件没有类型和函数的定义,一般用于数值分析。

可以直接使用里面定义的宏,比如下面的代码输入有符号int类型的最大值和最小值,以及float类型的最大值和最小值。

#include<stdio.h>
#include <limits.h>
#include <float.h>
int main()

    printf("int最大值:%d\\t最小值:%d\\n", INT_MAX, INT_MIN);
printf("float最大值:%e\\t最小值%e\\n",FLT_MAX,FLT_MIN);
    return 0;

参考技术A 你说的是溢出,当数据超出数据类型的最大上限就会出现这种数据出错的现象。
int的取值范围是 -32768~32767 即 -2的15次方 ~2的15次方-1
float的取值范围是 -3.4*10的负38次方 ~ 3.4*10的38次方
你看到的%f 是用于显示浮点型变量的,前面的数字是根据如下公式表示的
%m.nf m是指数据总共占的长度,n是指小数点的位数
参考技术B 整型数说明
加上不同的修饰符, 整型数有以下几种类型;
signed short int 有符号短整型数说明。简写为short或int, 字长为2
字节共16位二进制数, 数的范围是-32768~32767。
signed long int 有符号长整型数说明。简写为long, 字长为4字节共
32位二进制数, 数的范围是-2147483648~2147483647。
unsigned short int 无符号短整型数说明。简写为unsigned int, 字长
为2字节共16位二进制数, 数的范围是0~65535。
unsigned long int 无符号长整型数说明。简写为unsigned long, 字长
为4字节共32位二进制数, 数的范围是0~4294967295。

浮点型(float)
一、浮点数说明
Turbo C中有以下两种类型的浮点数:
float 单浮点数。字长为4 个字节共32 位二进制数, 数的范围是
3.4x10-38E~3.4x10+38E。
double 双浮点数。字长为 8个字节共 64 位二进制数, 数的范围是
1.7x10-308E~1.7x10+308E。
说明:
浮点数均为有符号浮点数, 没有无符号浮点数。

printf 语句中的是控制输出形式,如:%.2f 输出时小数点后面占两位本回答被提问者采纳

以上是关于c语言 float型数据输入需要注意啥吗的主要内容,如果未能解决你的问题,请参考以下文章

c语言float可以输入指数吗

c语言中float(input())怎么理解?

c语言%f输出float型数据的四舍五入问题

c语言int占几个字节

C语言中float是啥意思

c语言中定义浮点变量输入用的整数会报错吗