|
На самом деле погрешность будет всегда, хоть это будет float, хоть double. Просто у double погрешность меньше, т.к. выше точность, поэтому, видимо, так удачно округлилось.
В вашем случае, думаю, можно написать свою функцию округления до ближайшего целого. К примеру, такую:
Code:
int Round(double x) //Округление до ближайшего целого
{
if (x - floor(x) < 0.5)
return floor(x); //Округление с недостатком
return ceil(x); //Округление с избытком
}
А в серьезных математических пакетах проблемы с точностью, насколько я знаю, решают рядом способов, в числе которых длинная арифметика и создание типа "рациональная дробь" с определением для него всех необходимых операций. |
IP сохранен
|