如何在Python中将数字按小数点拆分生成两个字符串?
实现方案
直接用字符串按小数点分割的方式做拆分,完全贴合输出格式要求,不会出现浮点数运算的精度偏差,补全后的完整代码如下:
radius = int(input("\nPlease enter the radius of the area: ")) if 1 <= radius <= 75: circleArea = 3.1416 * (radius ** 2) circleKilos = circleArea / 100 print("The KGs required is: ", circleKilos) fiveDivide = circleKilos / 5 # 拆分整数和小数部分 num_str = str(fiveDivide) if '.' in num_str: int_part_str, dec_fragment = num_str.split('.', maxsplit=1) dec_part_str = f'.{dec_fragment}' else: # 处理刚好整除、无小数位的情况 int_part_str = num_str dec_part_str = '.0' # 计算1KG包装袋数量:小数部分数值*5即为剩余所需公斤数 one_kg_bag_count = float(dec_part_str) * 5 # 按要求格式输出 print(f"The number of 5KG Bags is: {int_part_str}, ") print(f"The number of 1KG Bags is: {one_kg_bag_count}")
逻辑说明
- 拆分时用
maxsplit=1限制只分割一次,避免特殊数值下出现多个分割点的异常,完全匹配要求的「整数部分独立字符串、带前导小数点的小数部分字符串」的拆分规则 - 针对刚好整除的场景做了兼容,比如总重量为10KG时
fiveDivide=2,会自动补全小数部分为.0,1KG袋数计算结果为0 - 1KG袋数的计算逻辑对应业务规则:
fiveDivide = 总重量/5,小数部分乘以5刚好是5KG袋装完后剩下的重量,也就是需要的1KG袋总重量 - 输入半径范围在1-75之间时,计算出的数值不会触发科学计数法,字符串拆分逻辑稳定可用
内容的提问来源于stack exchange,提问作者Emilio
相关产品推荐
相关产品推荐

