我在C#中进行了简单的转换
double dindex,bindex;
int index;
for(double pr=1100;pr<=1101;pr+=0.1)
{
dindex = Math.Round(pr,1);
bindex = dindex/0.1;
index = (int)bindex;
}
我有dindex,bindex和index的打印值,最后一行应该转换为int但它并不总是正确的,输出如下所示:如何使第3列(索引)上的转换后的int等效第2列加倍(bindex)?
1100 11000 11000
1100.1 11001 11000
1100.2 11002 11002
1100.3 11003 11002
1100.4 11004 11004
1100.5 11005 11005
1100.6 11006 11005
1100.7 11007 11007
1100.8 11008 11007
1100.9 11009 11009
1101 11010 11010
我做错了什么?
答案 0 :(得分:2)
int index = Convert.ToInt32(bindex);
答案 1 :(得分:1)
我不知道为什么你会期望舍入和截断产生相同的结果。但是如果你想从截断中获得相同的结果,你可以在截断之前添加0.5。
index = (int)(bindex + 0.5);
答案 2 :(得分:0)
Double通常不使用固定小数。在您的示例中,
1100.1 11001 11000
确认,bindex
存储的值为11000.999...
,其得到的结果为int
11000
。如果你想要精确并且确定你的价值不高可笑(阅读:float
范围内),你可以使用float
而不是双倍。 Othwerwise,尝试使用decimal
。