我正在尝试将坐标点存储在double变量中。这很简单。我有x和y坐标。我的double变量将其存储为x.y。当我尝试将此值转换为单独的坐标时,遇到了一些麻烦。
我尝试了这些代码,但仍然遇到相同的错误。
//First try
double temp=memory.pop();
int x=(int)temp;
int y=(int)((temp-(int)temp)*100);
//Second try
double temp=memory.pop();
int x=(int)temp;
int y=100.0f*temp-(((int)temp)*100.0f);
在临时变量中,我有5.14双数。经过计算,x应该是5,y应该是14。但是,x变成5,y变成13。
答案 0 :(得分:2)
问题与整数转换有关。具体地说,(int)temp
将降到第一个较小的整数。举例来说,值 5,14 可以(可能不是)精确到小/大(因为正如评论中所述,浮点数不会t具有无限的精度)。因此,在不失一般性的前提下,假设是 5,13999999999999 ,您可以看到执行操作时将获得 13 而不是 14 坐标的第二部分。