十进制长度单位转建筑类单位且保留英尺单位的问题咨询
十进制英尺转建筑类英制单位解决方案
异常原因
你遇到的转换结果偏差是因为当前转换逻辑错误将输入的十进制英尺数值识别为了英寸单位,91.607英寸换算后恰好是7'左右,和你得到的错误结果一致。
操作解决步骤
- 先进入你使用的建筑设计工具(AutoCAD、Revit等均可在「单位设置」面板找到对应选项)的单位转换规则配置页,指定原十进制长度字段的基础单位为英尺,而非默认的英寸、米等单位。
- 调整建筑类单位的显示规则:关闭「单位自动换算」选项,指定主显示单位为英尺,最小显示精度按你的需求设置为1/8"、1/16"即可,避免数值被自动拆分换算为其他单位。
- 完成设置后可先用样例校验:输入4.667'会正确输出4' - 8";原91.607'会输出91' - 7 5/16",38.333'会输出38' - 4",符合使用需求。
批量转换代码逻辑
如果需要自行做批量数据转换,可以使用如下转换函数:
def decimal_feet_to_arch(decimal_feet, frac_precision=16): # 提取整数英尺部分 feet = int(decimal_feet) # 小数部分转英寸 total_inch = (decimal_feet - feet) * 12 inch = int(total_inch) # 计算英寸的分数部分 fraction = round((total_inch - inch) * frac_precision) # 处理进位逻辑 if fraction == frac_precision: inch += 1 fraction = 0 if inch == 12: feet += 1 inch = 0 # 格式化输出建筑单位字符串 if fraction == 0: return f"{feet}'-{inch}\"" if inch > 0 else f"{feet}'" return f"{feet}'-{inch} {fraction}/{frac_precision}\"" if inch > 0 else f"{feet}'-{fraction}/{frac_precision}\""
内容的提问来源于stack exchange,提问作者Freetrkdkbxmail kinmzkbcg
相关产品推荐
相关产品推荐

