【发布时间】:2017-03-07 02:18:38
【问题描述】:
我正在编写一个从十进制到分数英寸的小型“转换”脚本。因此 1.535 英尺转换为 1' - 6 7/16" 的字符串。 我已经解决了所有英尺和英寸的问题,但是在对英寸的小数部分进行四舍五入时遇到了问题。
我的部分代码是:
F = 0.336 # This is the value that I get for decimal part of inches: if it is 0, the w = '0"' if it 0.999 is w = '31/32"'
w = '0"'
if F == 0:
w = '0"'
elif 0 < F <= 0.03125: #1/32"
w = '1/32"'
elif 0.03125 < F <= 0.0625: #2/32"
w = '2/32"'
elif 0.0625 < F <= 0.09375: #3/32"
w = '3/32"'
elif 0.09375 < F <= 0.125: #4/32"
w = '4/32"'
elif 0.125 < F <= 0.15625: #5/32"
w = '5/32"'
# .etc until 32/32"
print(w)
问题是我的print(w) 将始终导致0 无论F 的值是多少
帮助不胜感激!
【问题讨论】:
-
请包含您的所有代码。您正在寻求帮助以查找错误,但隐藏了应处理 0.336 值的代码。
-
w = '5/32"后面少了一个单引号。 -
为什么要手动转换,而不是使用
fractions模块? -
也许这会更容易维护为
while循环,其中您的聚合数字从 0 开始并增加要检查的值0.03125并继续检查您的数字是否较小大于或等于它。 -
@Austin - 我无法发布整个代码。抱怨的时间太长了。任何建议,我如何发布它?谢谢!
标签: python