I’m looking to round numbers to their nearest 1,000 closest to zero. The following code works for positive numbers
import math
original_number = 1245
new_number = math.floor(original_number / 1000.00) * 1000
>> 1000
However, when I use the code on negative numbers it moves further away.
import math
original_number = -1245
new_number = math.floor(original_number / 1000.00) * 1000
>> -2000
>Solution :
You can just use the absolute value of the number you are rounding, then preserve the sign of your number using math.copysign(),
import math
original_number = -1800
new_number = math.copysign(abs(original_number)//1000*1000, original_number)