Вы можете использовать следующий класс MyFloat
вместо встроенного класса float
.
def _remove_leading_zero(value, string):
if 1 > value > -1:
string = string.replace('0', '', 1)
return string
class MyFloat(float):
def __str__(self):
string = super().__str__()
return _remove_leading_zero(self, string)
def __format__(self, format_string):
string = super().__format__(format_string)
return _remove_leading_zero(self, string)
С помощью этого класса вам придется использовать функцию str.format
вместо оператора модуля ( %
) для форматирования. Ниже приведены некоторые примеры:
>>> print(MyFloat(.4444))
.4444
>>> print(MyFloat(-.4444))
-.4444
>>> print('some text {:.3f} some more text',format(MyFloat(.4444)))
some text .444 some more text
>>> print('some text {:+.3f} some more text',format(MyFloat(.4444)))
some text +.444 some more text
Если вы также хотите заставить оператор модуля (%
) класса str
вести себя одинаково, тогда вам придется переопределить __mod__
метод класса str
путем подкласса класса. Но это будет не так просто, как переопределить метод __format__
класса float
, так как в этом случае отформатированное число с плавающей точкой может присутствовать в любой позиции в результирующей строке.
[Примечание: Все приведенные выше коды написаны на Python3. Вам также придется переопределить __unicode__
в Python2, а также изменить вызовы super
.]
Возможно, вы используете старую версию TypeScript. Чтобы проверить свою версию, запустите команду tsc --version
.
Если ваша версия старше последней (3.3.3333), найдите ее с помощью команды which tsc
и удалите.
Удалите глобальный TypeScript с помощью команды npm uninstall -g typescript
и установите последнюю стабильную версию с помощью команды: npm install -g typescript