求编写将数字四舍五入至最接近末位为90的数的函数方案
实现取整至末位为90的最近数
核心逻辑
你需要的是将数字取整到最后两位为90的最近数(如11190、11290这类),而非90的倍数。正确推导步骤如下:
- 给原数加10,把目标数的末位90转换为00(比如11190+10=11200,末位为00)
- 对转换后的数四舍五入到最近的整百数
- 再减去10,还原回末位为90的数
代码实现(以PHP为例)
function roundToLastTwo90($num) { $adjusted = $num + 10; $nearestHundred = round($adjusted / 100) * 100; return $nearestHundred - 10; }
验证示例
- 输入
11210:- 11210 + 10 = 11220
- 11220四舍五入到百位是11200
- 11200 - 10 = 11190(符合预期)
- 输入
11250:- 11250 +10=11260
- 四舍五入到百位是11300
- 11300-10=11290(距离11250更近,正确)
为什么之前的解法不对
ChatGPT给出的ceil($num/90)*90是取大于等于原数的最近90倍数,但这和你要的「末位为90的数」完全不是一个概念——90的倍数最后两位可能是00、50、80等(比如90*125=11250,末位是50),自然不符合需求。
内容的提问来源于stack exchange,提问作者Ronohx
相关产品推荐
相关产品推荐

