可能损失分数
请原谅我,如果这是一个天真的问题,但是我今天不知所措。
我有一个简单的划分计算,如下所示:
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);