Числа с плавающей точкой. -
Norck - 18.03.2011
Приветствую. Первый раз столкнулся с такого рода проблемой.
Строка:
pawn Код:
printf("%f | %f | %f | %f | %f | %f",10.1,20.1,30.1,40.1,50.1,60.1);
Выводит результат:
Код:
10.100000 | 20.100000 | 30.100000 | 40.099998 | 50.099998 | 60.099998
Первые три значения выводятся корректно, последние три - нет.
Почему?
Re: Числа с плавающей точкой. -
Radius - 18.03.2011
По дефолту
%f ставит 6 чисел после точки. Если хочешь, чтобы была одна цифра (после точки) -
%.1f, две -
%.2f, три -
%.3f
Re: Числа с плавающей точкой. -
Norck - 18.03.2011
Проблема НЕ в количестве чисел после точки, а в самом выводе.
Если попытаться вывести 40.1 как
То выведет НЕ 40.1, а 40.0 !
Хотя 10.1, 20.1, 30.1 выводит нормально.
Re: Числа с плавающей точкой. -
Stepashka - 18.03.2011
А что удивительного?
Почитайты про основы програмирования и о том как процессоры оперируют числами.
Re: Числа с плавающей точкой. -
Norck - 18.03.2011
Если бы для меня здесь не было бы ничего удивительного, я бы, очевидно, не создавал бы данную тему и не задавал бы подобный вопрос. Если на то пошло, то, будьте так добры, выражайтесь конкретнее, если у Вас имеются какие-либо стоящие сведения или предположения по данному вопросу.
Re: Числа с плавающей точкой. -
Stepashka - 18.03.2011
Процессоры не умеют работать с числами с плавающей запятой, они могут оперирывать только целыми числами, для работы с дробными на уровне ядра идет их "интерпретация".
Погрешность которая вас удивила последствия этой "интерпретации", и от неё не избавиться.
Re: Числа с плавающей точкой. -
Norck - 18.03.2011
Весьма благодарен за столь содержательный ответ. Тема более не актуальна.
Re: Числа с плавающей точкой. -
White_116 - 24.03.2011
Как округлить число Alpha до 0.1 тут
new Float:Raznica=(Alpha-Beta);
Есть ли StrFloat или как это обойти
Re: Числа с плавающей точкой. -
Makar93 - 24.03.2011
Quote:
Originally Posted by White_116
Как округлить число Alpha до 0.1 тут new Float:Raznica=(Alpha-Beta);
Есть ли StrFloat или как это обойти
|
floatround?
Re: Числа с плавающей точкой. -
White_116 - 24.03.2011
а если до 0.01