浮点数除法

使用浮点数完成除法运算

整数除法的问题

前面两个整数相除,结果是整数。这个值是不正确的,除非刚好是整数倍。

在饼干分给小孩时,这种除法没有问题。但是将 10 尺长的厚板均分四块,这时候就有问题了。

这时需要浮点数。

使用浮点数进行除法运算,会得到正确的结果(在精确度范围内)。

示例代码

#include <stdio.h>                  

int main(void) 
{ 
	printf("%d\n",10/4); // 输出 2
	
	float plank_length = 10.0f;
	float piece_count = 4.0f;
	float piece_length = 0.0f;
	
	piece_length = plank_length / piece_count;
	 printf("一块长%f尺的面板平均分成%f份后每块长%f尺\n",plank_length,piece_count,piece_length);
	return 0;                        
}Code language: PHP (php)

输出结果

2
一块长10.000000尺的面板平均分成4.000000份后每块长2.500000尺Code language: CSS (css)

代码解析

语句说明
printf("%d\n",10/4);两个整数相除,10/4 结果为整数 2,小数部分被截断。
float plank_length = 10.0f;声明并初始化木板总长度为 float 类型,带 f 后缀。
float piece_count = 4.0f;声明并初始化分割份数为 float 类型。
float piece_length = 0.0f;声明并初始化每块长度为 float 类型。
piece_length = plank_length / piece_count;两个浮点数相除,得到精确结果 2.5。
printf("...%f...", ...);格式说明符 %f 用于显示 float/double 类型的浮点数。

核心要点

  • 整数除法 vs 浮点数除法:
    • 10/4(两个整数)→ 结果为 2(截断小数)。
    • 10.0f/4.0f(两个浮点数)→ 结果为 2.5。
  • 格式说明符必须匹配:
    • %d 用于 int 类型。
    • %f 用于 float 和 double 类型(float 传入时自动提升为 double)。
    • 如果格式说明符与输出值的类型不对应(如用 %d 输出 float),会出现垃圾值或程序异常。
  • 浮点数精度:%f 默认输出 6 位小数(10.000000)。可通过 %.2f 等方式指定小数位数。

建议尝试:将 printf 中的 %f 改为 %d 输出浮点变量,观察错误结果,加深对类型匹配重要性的理解。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注