可能损失分数

请原谅我,如果这是一个天真的问题,但是我今天不知所措。

我有一个简单的划分计算,如下所示:

double returnValue = (myObject.Value / 10); 

值是对象中的一个int。

我收到一条消息,说可能损失的分数。 但是,当我把double改成int时,消息就消失了。

任何想法为什么会发生?

当你将两个int分成一个浮点值时,分数部分就会丢失。 如果您将其中一个项目转换为浮动forms,则不会出现此错误。

所以例如把10变成10.0

 double returnValue = (myObject.Value / 10.0); 

你正在做整数除法,如果myObject.Value是一个int,因为/的整数types的两边。

要进行浮点除法,expression式中的其中一个数字必须是浮点types。 如果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。

您需要先input值(s):

 double returnValue = (double)(myObject.Value) / 10.0; 

这将导致正确的值1.2,至less正确的双打将允许给他们的限制,但这是在其他地方讨论,几乎无休止地:-)。

我认为,因为myObject是一个int,你应该

 double returnValue=(myObject.Value/10.0);