测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
B25

浮点数:小数怎么存、怎么除

引入

章前总览 第5章进入小数(浮点型)字符(char)。本节先搞清:用 double/float 存小数;两个整数相除得到整数商,要小数结果至少一侧得是浮点数。

逻辑链条:

  • C1:float / double 与小数常量
  • C2:科学记数法 3.14e4
  • C3:整数除法 vs 浮点数除法

1 C1. 浮点型变量与常量

小数在 C++ 里叫浮点数。float 单精度(约 6~7 位小数),double 双精度(约 15~16 位)。一级题目多用 double

</> 写法

double d = 2.5, pi = 3.1415926;
// d、pi 是浮点变量;2.5、3.1415926 是浮点常量
  • 定义浮点变量要用关键字 doublefloat
  • 一级做题优先 double,精度更稳。

2 C2. 科学记数法

很大或很小的小数可以写成 数字E指数(E 大小写均可),表示 ×10 的几次方。

例子

  • 3.1415926E4 = 3.1415926 × 10⁴ = 31415.926
  • 1e5 = 100000;2.5E3 = 2500

3 C3. 整数除法与浮点数除法

两个整数相除 → 整数商(丢掉小数)。要得到带小数的商,被除数、除数至少有一个是浮点数。

补充说明

不推荐

cout << 17 / 5;   // 输出 3,不是 3.4

问题:整数除法不会自动变成小数。

推荐写法

cout << 17.0 / 5;   // 3.4
cout << 17 / 5.0;   // 3.4
cout << 17.0 / 5.0; // 3.4

优点:圆周长、折扣金额都能保留小数。

整型变量怎么得到小数商

  • ab 都是 int,写 a/b 仍是整数商。
  • 正确写法:1.0*a/b,或强制转换(后文 B29)。
  • 例:求半径不要写 d/2(d 为 int),要写 d/2.0
小结

记住三条:

用 double 存小数
17/5 → 3(整数商)
17.0/5 → 3.4(浮点商)
1.0*a/b  让整型变量也能得到小数商
里程碑达成:

下一节学习字符型:char、ASCII、单引号与双引号的区别。