在python中将大数除以10给出错误的结果

问题描述

假设我想删除数字 <canvas id="myCanvas" width="400" height="400" style="border:1px solid #ff0000;"> </canvas> <br> <p>Choose a Shape</p> <select id="shapesId"> <option value="">Please select</option> <option value="rectangle">rectangle</option> <option value="circle">circle</option> </select> <input type=button value="DRAW" onclick="javascript:draw();"> <script> function draw() { var xvalue = document.getElementById("shapesId").options[document.getElementById("shapesId").selectedindex].value; if (xvalue=="rectangle") { var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.clearRect(0,400,400); var ctx = c.getContext("2d"); //ctx.clearRect(0,canvas.width,canvas.height); ctx.beginPath(); ctx.rect(20,20,150,100); ctx.stroke(); } if (xvalue=="circle") { var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.clearRect(0,400); var ctx = c.getContext("2d"); //ctx.clearRect(0,canvas.height); ctx.beginPath(); ctx.arc(95,50,40,2 * Math.PI); ctx.stroke(); } } </script> 的最后一位。 为此,我使用代码 n

遗憾的是,这对大数字给出了错误的结果。 例如,int(n/10) 除以 n = 4474630975855204960 得到 10

这种行为的原因是什么?我该如何解决

解决方法

对于某些数学运算,Python 解释器会为您处理长整数,您无需考虑。

Division 是不同的,它将整数转换为浮点数,这在 Python 中处理得不好。

您可以通过直接使用整数除法来解决这个问题 - 两个 // 而不仅仅是一个 /。

输入

4474630975855204960//10

输出

447463097585520496
,

此语法因 Python 版本而异,使用 // 进行整数除法

$ python2 -c 'print("%d" % (4474630975855204960/10))'  # Integer division
447463097585520496
$ python3 -c 'print("%d" % (4474630975855204960/10))'  # Float division
447463097585520512
$ python3 -c 'print("%d" % (4474630975855204960//10))'  # True division
447463097585520496
,

您可以将 int 转换为 str,删除最后一个字符,然后将其转换回 int

n = 4474630975855204960

print(int(str(n)[:-1]))

输出:

447463097585520496