MRZ000 @ 2024-12-02 23:28:46
x = int(input())
str1 = input()
if "B" in str1 and "C" not in str1:
x *= 0.8
elif "C" in str1 and "B" not in str1:
x *= 0.7
elif "B" in str1 and "C" in str1:
x *= 0.6
print("%d"%x)
by Terrible @ 2024-12-03 00:41:59
@MRZ000
错误原因:数据范围最大设定在 x*=0.8
在计算过程中执行的是浮点乘法,得到的是双精度浮点数,存在特别大的数据使得计算结果无法准确地用双精度浮点数表示,即运算结果被迫丢弃掉了低位信息,但后面的数字应格式要求而需要精确地保留。
可以使用整数运算得到 int
型数,程序如下。
x = int(input())
str1 = input()
if "B" in str1 and "C" not in str1:
x = x // 10 * 8
elif "C" in str1 and "B" not in str1:
x = x // 10 * 7
elif "B" in str1 and "C" in str1:
x = x // 10 * 6
print("%d"%x)
by MRZ000 @ 2024-12-03 09:33:06
@Terrible 谢谢一直以来都没想过这个问题