Найти - Пользователи
Полная версия: Операции с числом с плавующей точкой
Начало » Python для новичков » Операции с числом с плавующей точкой
1
NoN
В переменной x хранится число с плаваете точкой, количество знаков после точки меняется.
Как уменьшить или увеличить последнею цифру?
Например:
X=9.343
Нужно получить x=9.342 или x=9.344

версия питона 3.1.1
GDK
Я бы наверное сделал неэффективно, но всё же скажу:

преобразовать это дело в строку, цыкл сзади строки до первой цыфры, которая не 0, заменяем её на цыфру, которая больше на 1, преобразуем полученную строку в число.
pasaranax
наверное, без преобразований в строку никак.
x = 9.343
fraction = len(str(x)) - str(x).find(".") - 1
x += 1.0 / 10 ** fraction
это увеличит на единицу в первом порядке
DHT
ну тогда и мой алгоритм:
- преобразовать X в строку, чтобы узнать N кол-во символов после точки;
- 0,1 возвести в степень N;
- прибавить/вычесть результат из исхоного числа X.

up:
pasaranax опередил :)
NoN
преобразовать число в строку, потом обратно это то что я и делал.
хочется без вот этого лишнего преобразовывания в строку
pasaranax
Монструозненько выглядит, но работает примерно в два раза быстрее с 3 знаками после точки, с 9 знаками скорости сравниваются, а с 10 вообще не работает, из-за округления наверное.
x = 9.343
order = 0
while x % 1:
x *= 10
order += 1
x += 1
x /= 10 ** order
NoN
pasaranax
спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB