如果這是一個天真的問題,請原諒我,但我今天處於虧損狀態。分數的可能損失
我有一個簡單除法計算例如如下:
double returnValue = (myObject.Value/10);
值是在對象的int。
我收到一條消息,說可能損失的分數。但是,當我將double改爲int時,消息就消失了。
有關爲什麼會發生這種情況的任何想法?
如果這是一個天真的問題,請原諒我,但我今天處於虧損狀態。分數的可能損失
我有一個簡單除法計算例如如下:
double returnValue = (myObject.Value/10);
值是在對象的int。
我收到一條消息,說可能損失的分數。但是,當我將double改爲int時,消息就消失了。
有關爲什麼會發生這種情況的任何想法?
當你把兩個int的成浮點值的小數部分丟失。如果您將其中一個項目轉換爲浮動,您將不會收到此錯誤。
因此,例如把10到10.0
double returnValue = (myObject.Value/10.0);
我想既然myObject的是一個int,你應該
double returnValue=(myObject.Value/10.0);
你做的整數除法如果myObject.Value
是int,因爲/
兩邊都是整型。
要進行浮點除法,表達式中的其中一個數字必須是浮點類型。如果myObject.Value是一個雙,或以下任何這將是正確的:
double returnValue = myObject.Value/10.0;
double returnValue = myObject.Value/10d; //"d" is the double suffix
double returnValue = (double)myObject.Value/10;
double returnValue = myObject.Value/(double)10;
的整數除以整數將返回你的一個整數。將其中的任意一個值賦值爲double或者除以10.0。
假設myObject.Value
是int
,等式myObject.Value/10
將是一個整數除法,然後將其轉換爲double。
這意味着myObject.Value爲12會導致returnValue變爲1,而不是 1.2。
你需要轉換值(S)第一:
double returnValue = (double)(myObject.Value)/10.0;
這將導致正確值1.2,至少爲正確雙打將允許給予其侷限性但就中越別處討論,幾乎無休止地:-)。
謝謝大家的好評。現在在分割2個int值時丟失小數點是有意義的。 – CodeLikeBeaker 2009-06-30 01:30:28