Превратить -0.00 в 0.00 float в Python

#python #xml #file #floating-point

#python #xml #файл #с плавающей запятой

Вопрос:

Я анализирую XML-файл с некоторыми координатами на Python для записи преобразованного выходного файла. Проблема в том, что некоторые координаты равны -0.00, и у меня возникли некоторые проблемы с их анализом в другой системе. Мне нужно, чтобы они были равны 0.00 вместо -0.00. Как я мог добиться такого?

Это то, что я делаю до сих пор:

 for node in nodes:
    nodeName = node.attrib['name']
    nodeParts = nodeName.split('.')
    nodeName = nodeParts[0]

    if nodeName == 'scene':
        f.write(nodeParts[1]   't')

        position = node.find('position')
        f.write('%.2f ' % float(position.attrib['x']))
        f.write('%.2f ' % float(position.attrib['y']))
        f.write('%.2fn' % float(position.attrib['z']))
 

Ответ №1:

Если значение равно нулю (положительное или отрицательное), примите абсолютное значение:

 >>> x = float('-0.0')
>>> x
-0.0
>>> abs(x)
0.0
 

Ответ №2:

Вам не нужно abs() .

 >>> test_values = [-1.0, -0.0, 0.0, 1.0]
>>> test_values
[-1.0, -0.0, 0.0, 1.0]
>>> [x if x else 0.0 for x in test_values]
[-1.0, 0.0, 0.0, 1.0]
>>> [x or 0.0 for x in test_values]
[-1.0, 0.0, 0.0, 1.0]
>>> [x   0.0 for x in test_values]
[-1.0, 0.0, 0.0, 1.0]
 

Ответ №3:

Может быть, вы могли бы разделить строку, прежде чем анализировать ее как число? Просто удалите «-» из поля ввода.

Ответ №4:

Вы можете использовать тот факт, что отрицательный ноль сравнивается с положительным нулем:

 def f(x):
   return 0. if x == 0. else x
 

Это превращается -0. в 0. , и оставляет все остальные числа нетронутыми.