Надо вывести число a типа float на экран c точностью не менее n знаков после запятой.
Python 3, без использования библиотек.
Asked
Active
Viewed 2.2k times
6
4 Answers
3
Python 3.6+:
>>> a = 2
>>> n = 3
>>> f'{a:.{n}f}'
'2.000'
Или (на более ранних версиях):
>>> '{a:.{n}f}'.format(**vars())
'2.000'
jfs
- 52,361
0
Вот какой вариант решения получается у меня:
>>> a = 2.0
>>> n = 5
>>> print(str(a).ljust(len(str(int(a)))) + n + 1, '0')
5.00000
или
>>> a = 2.12345678
>>> n = 5
>>> print(str(a).ljust(len(str(int(a)))) + n + 1, '0')
2.12345678
-
количество скобочек неверно (SyntaxError). Даже если добавить скобочку, возвращается
2000000дляa,n=2,5вместо ожидаемого'2.00000'. Для чисел типа1e-10возвращает'1e-1000'(что вряд ли является желаемым результатом). – jfs Nov 17 '16 at 13:29
0
def rounds(num, max_=2):
'''с точностью не более n "значащих цифр", после запятой. '''
left, right = str(num).split('.')
zero, nums = zero_nums = [], []
for n in right:
zero_nums[0 if not nums and n == '0' else 1].append(n)
if len(nums) == max_:
break
return '.'.join([left, ''.join(zero) + ''.join(nums)])
print(rounds(0.0102345, 3))
>>>0.0102
print(rounds(0.000102345, 4))
>>>0.0001023
vadim vaduxa
- 8,897
-
эээм, а с чего вы взяли, что нужно с точностью "не более n"? Я ведь даже выделил в вопросе жирным "НЕ МЕНЕЕ" – Nov 18 '16 at 07:44
-
тк c точностью не менее n, это странно. А если после запятой менее чем n знаков, дописывать нули? А если больше, то ничего и делать не надо, тк условие удовлетворяется автоматически. – vadim vaduxa Nov 18 '16 at 10:38
-
format(а не метод для строк):format(2.123456789, ".5f"). Возможные аргументы для форматирования описаны по адресу https://docs.python.org/3/library/string.html#formatspec – m9_psy Nov 17 '16 at 10:222в2.000..превратить (0повторенnраз). Если вам нужен точный результат, то простоrepr(a)вызовите (это не фиксированный формат). Формально, так какn <= nистинно, то любой ответ, который возвращаетnцифр, возвращает не менееnцифр. – jfs Nov 17 '16 at 11:101.234566678912345 == 1.2345666789123451. Объяснение. – jfs Aug 04 '17 at 09:14