如何基于数组中数字的最后两位小数将其分类到不同数组中
按小数后缀分类double数组实现方案
核心注意点
- 不要直接对double类型做小数部分截取,浮点数精度误差会导致判断错误(比如实际应为0.3的数值被存储为0.299999999999999的情况)。
- 推荐统一将数值乘以100后四舍五入取整,再对100取模,用整数结果做分类判断,准确率更高。
实现逻辑
- 初始化三个空数组,分别存储
.25、.5、.75后缀的数值 - 遍历输入的double数组,对每个元素做如下处理:
- 计算
round(数值 * 100) % 100得到整数余数 - 余数为25则归入
.25数组,余数为50归入.5数组,余数为75归入.75数组 - 可根据需求扩展其他后缀的分类规则
- 计算
可运行代码示例(Python)
import math def classify_by_decimal_suffix(input_list): # 初始化分类数组 arr_25 = [] arr_50 = [] arr_75 = [] for num in input_list: # 转整数判断避免精度问题 decimal_suffix = round(num * 100) % 100 if decimal_suffix == 25: arr_25.append(num) elif decimal_suffix == 50: arr_50.append(num) elif decimal_suffix == 75: arr_75.append(num) return arr_25, arr_50, arr_75 # 测试用例 test_list = [1.25, 2.25, 3.5, 10.5, 7.75, 4.75] arr_25, arr_50, arr_75 = classify_by_decimal_suffix(test_list) print(".25后缀数组:", arr_25) print(".5后缀数组:", arr_50) print(".75后缀数组:", arr_75)
运行结果
.25后缀数组: [1.25, 2.25] .5后缀数组: [3.5, 10.5] .75后缀数组: [7.75, 4.75]
其他语言适配说明
如果用Java/C++等其他强类型语言实现,逻辑完全一致:
- Java可以用
Math.round(num * 100) % 100计算后缀标识 - C++可以用
std::round(num * 100) % 100实现相同逻辑
内容的提问来源于stack exchange,提问作者Bilbro
相关产品推荐
相关产品推荐

