Проблемка

PockerFace
Offline
Зарегистрирован: 18.06.2014

Добрый день,

Не знаю в чем,но в простом примере,где надо сложить <-2> и <2>,и все это поделить на <2>,то вместо <0> получается <-5,96046е-008>.Почему? Кто знает?

Вот,примерно,как выглядит код:

float x1 = -2;

float x2 = 2;

float y = (x1 + x2)/2;

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

попробуйте вместо 2 писать 2.0 , чтобы компилятор правильно определял тип данных.

Си очень точный язык, поэтому данные надо тоже точно передавать.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

NeiroN пишет:

попробуйте вместо 2 писать 2.0 , чтобы компилятор правильно определял тип данных.

Си очень точный язык, поэтому данные надо тоже точно передавать.

Подозреваю, что Си, как раз правильно все посчитает, а вот Вайринг чудит.

toc
Offline
Зарегистрирован: 09.02.2013

float - это "приблизительное" число.
Ваше -5,96046е-008
это -0,0000000596046
очень близко к нулю, по-моему.
см. "компьютерный способ" http://ru.m.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B...

Radjah
Offline
Зарегистрирован: 06.08.2014

Тогда проще вывод форматировать, остави после запятой 2-3 знака.

Maverik
Offline
Зарегистрирован: 12.09.2012

еще варианты - перейти на целочисленные типы или округлять, в зависимости от задач.