Печать плаваний с определенным количеством нулей

Самый простой способ - это настроить конфигурацию заданий внутри программы

 Configuration conf=new Configuration();
 long milliSeconds = 1000*60*60; <default is 600000, likewise can give any value)
 conf.setLong("mapred.task.timeout", milliSeconds);

** перед ее настройкой. Проверьте правильность свойства в файле задания (файл job.xml) в графическом интерфейсе Jobtracker. назовите его mapred.task.timeout или mapreduce.task.timeout. , , во время выполнения задания снова проверьте в файле задания, изменяется ли это свойство в соответствии с установленным значением.

6
задан Mel 31 July 2017 в 09:48
поделиться

3 ответа

Я не думаю, что для этого есть предопределенный формат - формат в Python унаследован от C, и я почти уверен, что у вас нет желаемого формата в C.

Теперь, в python 3, у вас есть специальная функция format , в которой вы можете выполнять собственное форматирование. Удалить последние нули в python очень просто: просто используйте метод полосы:

a = 1.23040000
print str(a).rstrip('0')

Если вы хотите сохранить 0 после десятичной точки, это тоже не очень сложно.

5
ответ дан 8 December 2019 в 13:48
поделиться

Как насчет использования десятичный модуль?

Из документации :

«Десятичный модуль включает понятие значащих разрядов, так что 1,30 + 1,20 равно 2,50. Завершающий ноль сохраняется для обозначения значимости. Это обычное представление для денежных приложений. Для умножения «школьный» подход использует все числа в множимых. Например, 1,3 * 1,2 дает 1,56, а 1,30 * 1,20 дает 1,5600. "

] normalize () функция удаляет конечные нули:

>>> from decimal import *
>>> d1 = Decimal("1.30")
>>> d2 = Decimal("1.20")
>>> d3
Decimal("1.5600")
>>> d3.normalize()
Decimal("1.56")
9
ответ дан 8 December 2019 в 13:48
поделиться

Оператор '% 2.2f' будет использовать только одно и то же количество десятичных знаков независимо от того, сколько значащих цифр в номере. Вам нужно будет определить это по номеру и вручную изменить формат. Вы могли бы сократить это, вывести строку с большим количеством десятичных знаков и удалить все конечные нули.

Простая функция для этого может выглядеть примерно как intel_format () в примере ниже:

import re

foo_string = '%.10f' % (1.33333)
bar_string = '%.10f' % (1)

print 'Raw Output'
print foo_string
print bar_string

print 'Strip trailing zeros'
print re.split ('0+$', foo_string)[0]
print re.split ('0+$', bar_string)[0]

print 'Intelligently strip trailing zeros'
def intel_format (nn):
    formatted = '%.10f' % (nn)
    stripped = re.split('0+$', formatted)
    if stripped[0][-1] == '.':
        return stripped[0] + '0'
    else:
        return stripped[0]

print intel_format (1.3333)
print intel_format (1.0)

При запуске вы получите следующий результат:

Raw Output
1.3333300000
1.0000000000
Strip trailing zeros
1.33333
1.
Intelligently strip trailing zeros
1.3333
1.0
1
ответ дан 8 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: