Быстрая арифметика с плавающей запятой кажется сломанной по сравнению с C (и поэтому Objective-C).Почему Swift дает мне неточные результаты арифметики с плавающей запятой?
Давайте рассмотрим простой пример. В C:
double output = 90/100.0; // Gives 0.9
float output = 90/100.0f; // Gives 0.9
В Swift:
var output = Double(90)/Double(100.0) // Gives 0.90000000000000002
var output = Float(90)/Float(100.0) // Gives 0.899999976
Что происходит? Это ошибка, или я чего-то не хватает?
EDIT:
#import <iostream>
int main() {
double inter = 90/100.0;
std::cout << inter << std::endl; // Outputs 0.9
return 0;
}
oh пыльник плавающий арифметический вопрос ... btw 'double output = 90/100.0; // не дает 0.9' –
Печать результатов на C с таким же количеством десятичных знаков, вероятно, приведет к тому же выводу. –
Вам что-то не хватает. Много Qs & As здесь на SO об этом, попробуйте начать с http://stackoverflow.com/questions/588004/is-floating-point-math-broken –