Python如何将长度划分为近似等分段并四舍五入到1/32英寸且保持总长度不变
橱柜分段计算实现方案
核心逻辑
- 为了同时满足精度要求和总长度无偏差,我们统一以
1/32英寸为最小计数单位做整数运算,完全避免浮点误差 - 先将总可用长度转换为最小单位的整数值,拆分后只需要把余数部分均匀分摊到少数分段上,每个分段最多仅比平均长度差1/32英寸,完全符合橱柜安装公差要求
完整可运行代码
import math # 输入总长度 run_length = float(input("输入橱柜总长度(单位:英寸):")) # 输入缝隙数量 reveal_num = int(input("输入拼接缝隙的数量:")) reveal_length = reveal_num * 0.125 true_length = run_length - reveal_length # 输入分段数量 section_num = int(input("输入需要拆分的柜体/门板数量:")) # 转换为以1/32英寸为单位的整数,避免浮点计算误差 total_units = round(true_length * 32) # 计算每段基础单位数和需要多分配1个单位的段数 base_unit = total_units // section_num extra_num = total_units % section_num # 生成分段长度列表 sections = [] # extra_num个段多1个单位,其余用基础长度 for _ in range(extra_num): sections.append((base_unit + 1) / 32) for _ in range(section_num - extra_num): sections.append(base_unit / 32) # 输出结果 print(f"总可用长度:{true_length} 英寸,拆分结果如下:") for idx, length in enumerate(sections, 1): print(f"第{idx}段长度:{length} 英寸") print(f"所有分段总长度:{sum(sections)} 英寸,与总可用长度完全一致")
代码说明
- 所有输入的数量类参数(缝隙数、分段数)都改为
int类型,避免非法输入小数的问题 - 不再需要单独判断是否可以整除的分支,这套逻辑对所有场景都适用:
- 如果可以完全均分,
extra_num会是0,所有分段长度完全一致 - 如果不能均分,仅
extra_num个段比平均长度多1/32英寸,其余完全一致,总长度不会有任何偏差
- 如果可以完全均分,
- 所有分段的长度都是1/32英寸的整数倍,完全满足英制精度要求
内容的提问来源于stack exchange,提问作者AutoCAD_Comrad
相关产品推荐
相关产品推荐

