目录
1.输出1/3
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 1/3;
printf("%d",a);
return 0;
}
输出结果:0
2.输出1.0/3
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 1.0/3;
printf("%d",a);
return 0;
}
输出结果:1610612736
%d 直接输出整数,有有符号和无符号之分,看你的定义了 %c 是输出单个字符的,从ASCII码角度看,字符可以直接输出为相应的整数 %f 是输出浮点数,大部分情况是小数,不指定位数的话根据系统一般是小数点后保留6位,像%.4f 保留4位
3.输出1.0/3
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 1.0/3;
printf("%f",a);
return 0;
}
输出结果:0.333333
4.输出3.0/3
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 3.0/3;
printf("%f",a);
return 0;
}
输出结果:1.000000
发现在C语言中不能像C++那样把后位小数部分0去掉,如下:
#include<iostream>
using namespace std;
int main(){
cout<<3.0/3;
return 0;
}
输出结果:1
5.输出3.0/3.0
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 3.0/3.0;
printf("%f",a);
return 0;
}
输出结果:1.000000
6.输出3.0/2
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 3.0/2;
printf("%f",a);
return 0;
}
输出结果:1.500000
7.输出0.2222222222
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 0.2222222222;
printf("%f",a);
return 0;
}
输出结果:0.222222
8.输出1.222222222222
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 1.222222222222;
printf("%f",a);
return 0;
}
输出结果:1.222222
小数点后输出6位了!
再回过来看一下vs code 里C++的输出
#include<iostream>
using namespace std;
int main(){
cout<<1.222222222222;
return 0;
}
输出结果:1.22222
可见C++可见的加上整数部分也就6位
而C可见部分能达到小数点后六位
9.输出11111111.222222222222
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float a;
a = 11111111.222222222222;
printf("%f",a);
return 0;
}
输出结果:11111111.000000
可见C小数点后六位是保持下来的,但为什么不是11111111.222222
而是11111111.000000?
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
double a;
a = 11111111.222222222222;
printf("%f",a);
return 0;
}
11111111.222222
把float改成double即可实现小数点后6位2的保留
上网找float和double的区别:
1、float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,float的指数范围为-127+128,而double的指数范围为-1023+1024,并且指数位是按补码的形式来划分的。
2、float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的"“1",由于它是不变的,故不能对精度造成影响。float: 2^23=8388608,一共七位,double: 2452= 4503599627370496,一共16位。
3、float型的变量一般占用4个字节的内存空间,double型一般占用8个字节的内存空间
#include<iostream>
using namespace std;
int main(){
cout<<11111111.222222222222;
return 0;
}
1.11111e+07