Вот код:Objective-C: floorf() возвращает неверное значение
float passedPrice = 2.953;
float placed = 1000.0; //3 decimals
NSLog("%f", placed); // Gives 2953;
float withNoFractions = floorf(passedPrice * placed);
Значение, сохраненное в withNoFractions является 2952! Это будет 2953. Что действительно странно, так это то, что он работает некоторое время.
[Что каждый программист должен знать о плавающей точкой] (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CDQQFjAB&url=http%3A% 2F% 2Ffloating-point-gui.de% 2F & ei = tqq_UcPJKsav0AHymoDgCg & usg = AFQjCNEZ7cdKN5bOhpWTIQQCev6G53AQYg & sig2 = Ou9Gjbv655Pv6sQErqscMw & bvm = bv.47883778, d.dmQ) – Barmar
Я взглянул на статью. Тем не менее, это не решает проблему. прошлоЦена * помещена = 2953 не 2952. Почему настил дает 2952? –