我的问题是为什么,
import math
a = math.sqrt(3)
area = a * (1 / 2)
print area
输出0.0,但是,
import math
a = math.sqrt(3)
area = a / 2
print area
输出0.866025403784
答案 0 :(得分:0)
实际上这是2.X中整数截断的问题。
X / Y. 经典和真正的分工。 在Python 2.X中,此运算符执行经典除法,截断整数的结果,并保留浮点数的余数(即小数部分)。 在2.X中,/执行经典除法,如果两个操作数都是整数,则执行截断整数除法,否则执行浮点除法(保留余数)。在Python 3.X中,它执行 true division ,无论类型如何,始终将余数保留在浮点结果中。 在3.X中,/ now总是执行真正的除法,返回包含任何余数的浮点结果,而不管操作数类型如何。
在Python 2.X中你可以修复"这可以通过将从__future__ import division 添加到您的脚本中来实现。当使用/运算符并使用//进行整数除法时,这将始终执行浮点除法。
但你可以使分区中至少有一个操作数是一个浮点数,你得到一个浮动结果。
$(document).ready(function(){
CheckLastVisible();
$(window).resize(function() {
CheckLastVisible();
});
});
function CheckLastVisible(){
if($("#last-child").is(":visible")){
$("#last-child").parents(".left:eq(0)").addClass("left-fixed");
}
else{
$("#last-child").parents(".left:eq(0)").removeClass("left-fixed");
}
}
面积= A *(1/2) 区域 0.8660254037844386
我希望这会对你有所帮助。
答案 1 :(得分:-1)
我认为你正在使用python 2.7这是python 2.7的问题它将1/2评为零,因为它认为1&& 2都是整数所以它给出结果为整数但在第二种情况下你的math.sqrt( )函数返回一个double值,因此它将结果赋予double。但是如果你使用python 3.0,那么问题就解决了你在两种情况下都可以得到相同的结果,你可以尝试将1/2作为0.5。