我的协调系统有一些小错误

时间:2019-03-26 09:56:43

标签: c++ math

我正在尝试将坐标点存储在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。

1 个答案:

答案 0 :(得分:2)

问题与整数转换有关。具体地说,(int)temp将降到第一个较小的整数。举例来说,值 5,14 可以(可能不是)精确到小/大(因为正如评论中所述,浮点数不会t具有无限的精度)。因此,在不失一般性的前提下,假设是 5,13999999999999 ,您可以看到执行操作时将获得 13 而不是 14 坐标的第二部分。