C#double到int转换问题

时间:2014-06-07 19:45:13

标签: c#

我在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

我做错了什么?

3 个答案:

答案 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