简短版本:为什么我不必将60和int强制为双精度型,这样如果我关心精度小数部分,我可以使用另一个double精度来进行除法运算?Ints and Doubles doing division
长版:我的老板在一行代码中打电话给我。我测试了它,它工作得很好,但他认为我有一个等待发生的错误。
int durationinseconds = 61; // This is actually filled from a double.tryparse
// from a string value out of an xml doc.
int durationinminutes = (int)Math.Ceiling((double)durationinseconds/60);
我的代码应该从XML文档中获得秒数,然后计算分钟数,总是四舍五入。 60秒= 1分钟,61秒= 2分钟等。
我测试了我的代码,但他认为“/ 60”部分应该是“/ 60.0”。
我已经用0,1,2,59,60,61,119,120,121,599,600,601等测试了我的代码,并且它总是正常工作。在我为自己辩护之前,我主要理解为什么他认为我需要强制60为小数,因为他认为如果我使用int值,那么double/int将导致整数值,有效地降低了小数部分。
但是,这不是在这里发生的,我不能完全解释为什么。所以,这是我的问题:如果我想使用小数部分,为什么在分割双精度时不必使用60.0?
简洁,完美地向他展示我不是一个白痴。为了清楚起见,我不想跑到他身边,说“我不对!”这是我第二周在这里,我想让他觉得我不是白痴。我很清楚可能因隐式投射和分割而失去精确性而产生的问题,但在我推动它之前,我也对其进行了充分测试,以确保我没有犯下愚蠢的错误。 再次感谢乔恩。我会提高你的答案和其他几个,但关于我的新工作的防火墙的一些事情使得无法使用openid登录。 – Matt 2010-07-07 13:54:53
使用'60D'代替'60.0'是不是也是正确的?我不确定它的可读性/正确性,但看过几次。 – JYelton 2010-07-07 15:34:45