In [1]:
def my_round(val, digit=0):
p = 10 ** digit
return (val * p * 2 + 1) // 2 / p
In [2]:
my_round_int = lambda x: int((x * 2 + 1) // 2)
In [3]:
f = 123.456
In [4]:
print(int(my_round(f)))
In [5]:
print(my_round_int(f))
In [6]:
print(my_round(f, 1))
In [7]:
print(my_round(f, 2))
In [8]:
print(int(my_round(0.4)))
print(int(my_round(0.5)))
print(int(my_round(0.6)))
In [9]:
i = 99518
In [10]:
print(int(my_round(i, -1)))
In [11]:
print(int(my_round(i, -2)))
In [12]:
print(int(my_round(i, -3)))
In [13]:
print(int(my_round(4, -1)))
print(int(my_round(5, -1)))
print(int(my_round(6, -1)))
In [14]:
print(int(my_round(-0.4)))
print(int(my_round(-0.5)))
print(int(my_round(-0.6)))
In [15]:
import math
In [16]:
def my_round2(val, digit=0):
p = 10 ** digit
s = math.copysign(1, val)
return (s * val * p * 2 + 1) // 2 / p * s
In [17]:
print(int(my_round2(-0.4)))
print(int(my_round2(-0.5)))
print(int(my_round2(-0.6)))