Видимо, все исходные данные приводятся к плавающей точке, вычисления тоже производятся, приводятся и хранятся во FLOAT. А то что мы видим на экране это результат некого округления, а не реально хранящегося значение.Подобная стратегия применяется и в MS EXCEL, что часто приводит к непоняткам, особенно среди неопытных юзеров. Но там можно принудительно установить точность вычисления после запятой, а самое главное есть замечательная кнопка "Точность как на экране", которая сразу все расставляет по местам. Если я, к примеру, использую TF для 3D-печати, то точности 0.01 мне хватило бы выше крыши, а про эти проблемы я бы даже не догадывался.
Цитата |
---|
B_S_V написал: Может применение функции округления до заданной точности решит проблему? |
Наученный предыдущими приключениями решил сначала проверить работу функции округления, т.к. до этого не разу не использовал. Получилось не очень, см. рис. Из опыта программирования я ожидал, что должно быть, например ROUND(2.22,0) =2, ROUND(2.22,1) =2.2, ROUND(2.22,2) =2.22, ROUND(2.22,9) =2.22. Но полученные результаты ROUND я никак объяснить не могу. Кстати, замена B=12.02-9.8 на B=2.22 и прямая подстановка ROUND(2.22,3) не меняет результаты округления.