CSP-S 提高级 · CSP 2019 提高级第一轮 第 5 题

选择题 · 答案 B · 考点:运算符与表达式、基本数据类型、基础语法

← 整套速查表 CSP-S 提高级 全部真题

题目

设变量 $x$ 为 float 型且已赋值,则以下语句中能将 $x$ 中的数值保留到小数点后两位,并将第三位四舍五入的是()

答案:B

考点

运算符与表达式基本数据类型基础语法

解题思维

核心就三步:乘100放大、加0.5凑整、取整截断,最后再除100还原。关键是(int)必须夹在加0.5之后、除100之前。

常见错误

最容易栽跟头的是漏掉(int)强制转换,以为浮点运算会自动进位,其实C++里浮点除法永远保留小数,A选项就是典型陷阱;其次是括号位置搞错,把(int)挪到除100后面,那小数部分就被除丢了;还有人会误以为0.5/100.0也能凑整,殊不知除法的优先级让0.5先被100除成了0.005,完全起不到四舍五入作用,D选项就是坑在这儿。

详细解析(节选)

Q5 浮点数四舍五入

考察知识点

C++ 算术运算与类型转换

概念定义

四舍五入保留N位小数的标准方法: 1. 将原数乘以 10^N(放大N位小数到整数部分) 2. 加 0.5(实现四舍五入的"入") 3. 取整(截断小数) 4. 除以 10^N(恢复刻度)

原理:加0.5后取整,相当于"如果小数部分≥0.5,进位"。

逐步推导

设 x = 3.14159(保留两位小数 → 3.14) 1. x × 100 = 314.159 2. +0.5 = 314.659 3. (int)314.659 = 314(截断) 4. /100.0 = 3.14

设 x = 3.14559(保留两位小数 → 3.15) 1. x × 100 = 314.559 2. +0.5 = 315.059 3. (int)315.059 = 315(截断 → 进位成功!) 4. /100.0 = 3.15

选项分析:

避坑指南

技巧总结

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断