gpt4 book ai didi

python - (1e18+1)(1e18)/(1e18) 的除法在 Python 3.6 中给出 (1e18)

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:23 25 4
gpt4 key购买 nike

下面是代码 & 对于输入 n=(1e18+1)*(1e18) 和 k=(1e18),代码应该打印“YES”。但它打印“否”。这是因为“a”的值是 1e18。但理想情况下,'a' 应该是 (1e18+1)。请帮忙。

    for t in range(int(input())):
n,k=input().split()
n=int(n)
k=int(k)
if n>=k*k:
a=n/k
print("a is {}".format(a))
if a%k==0:
print ("a%k is {} ans {}".format(a%k, "NO"))
else:
print("a%k is {} ans {}".format(a%k, "YES"))
else:
print("YES")

输入:

3
1 1
30 5
1000000000000000001000000000000000000 1000000000000000000

输出:

a is 1.0
a%k is 0.0 and ans is NO
a is 6.0
a%k is 1.0 and ans is YES
a is 1e+18
a%k is 0.0 and ans is NO

最佳答案

这里的问题是您使用的是“普通”/ 划分,它总是产生一个 float 。由于 float 的精度有限,1e18+1 四舍五入为 1e18。

为了解决这个问题,使用整数除法//,给出一个整数。

通过改变这一行:

a = n // k

您的代码有效,如示例输出所示:

1
1000000000000000001000000000000000000 1000000000000000000
a is 1000000000000000001
a%k is 1 ans YES

关于python - (1e18+1)(1e18)/(1e18) 的除法在 Python 3.6 中给出 (1e18),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57443552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com