Python时钟角度计算场景下如何将浮点型角度转换为整型输出
问题原因
你的代码中使用了minute * 0.5这类浮点数运算,因此最终计算得到的夹角结果默认是float类型,输出时就会自带.0后缀。
解决方法
你可以任选以下任意一种方案修改代码:
方案1:存储结果时直接转整型
在把角度添加到列表时直接转成int类型即可,修改后的完整代码如下:
size = int(input()) angle = [] clock = [] for i in range(size): Inp = input().split(' ') clock.append(Inp) hour, minute = int(Inp[0]), int(Inp[1]) ans = abs((hour * 30 + minute * 0.5) - (minute * 6)) angle.append(int(min(360 - ans, ans))) print(*angle,sep="\n")
如果后续需要处理非整数夹角的场景,也可以用round()替代int()实现四舍五入取整。
方案2:输出时统一转整型
不用修改计算逻辑,只需在print时对列表元素批量转整型即可:
print(*map(int, angle), sep="\n")
方案3:改用整数运算从根源避免浮点问题
时钟夹角的计算公式可以改写为全整数运算形式,完全避免浮点数产生,精度更高:
size = int(input()) angle = [] clock = [] for i in range(size): Inp = input().split(' ') clock.append(Inp) hour, minute = int(Inp[0]), int(Inp[1]) # 全整数运算公式,结果直接为整型 ans = abs(60 * hour - 11 * minute) // 2 angle.append(min(360 - ans, ans)) print(*angle,sep="\n")
内容的提问来源于stack exchange,提问作者Mohan Gayen
相关产品推荐
相关产品推荐

