c语言基础——03浮点数精度及打印

本文探讨了浮点数在C语言中的精度问题,指出float类型的精度通常为小数点后6位,可能存在误差。代码示例展示了当比较接近的float数值时可能会误判为相等。同时,介绍了double类型的精度为小数点后15位,并通过示例展示其精度优势。最后,提到了浮点类型在内存占用和打印格式方面的知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.float精度为小数点后6位,6位以后可能正确,可能错误

#include<stdio.h>

void main(){
	float a = 3.789456123;
	float b = 3.789456223;
    float c = 3.789457123;
	if (a==b)
	{
		printf("两数相等");
	}

	if (a==c)
	{
		printf("a,c相等");
	}
	getchar();
    // float精度为小数点后6位
}

上述代码输出为:两数相等

2.double精度为小数点后15位

#include<stdio.h>

void main(){
	double a = 3.123451234512345123;
	double b = 3.123451234512345223;
	double c = 3.123451234512346223;
	if (a==b)
	{
		printf("两数相等");
	}
	if (a==c)
	{
		printf("a,c相等");
	}

	getchar();
}

3.浮点型打印

#include<stdio.h>
#include<stdlib.h>

void main(){
	float f1; // float占4字节
	double db;// double占8字节
	long double ldb;// long double在某些平台占16字节
	printf("%d,%d,%d", sizeof(f1), sizeof(db), sizeof(ldb));
	scanf_s("%f", &f1);
	scanf_s("%lf", &db);
	scanf_s("%Lf", &ldb);

    // printf打印float使用%f,打印double使用%lf,打印long double使用%Lf
	printf("\n%f,%lf,%Lf", f1, db, ldb);
	// printf打印小数默认打印6位
	printf("\n%.7f,%.20lf,%.40lf", f1, db, ldb);
	system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值