有没有办法用 Python 以特定方式舍入整数
Is there a way to round an integer in a specific way with Python
我刚开始在学校学习 Python。我正在尝试编写一个程序来进行简单的计算,以确定我妹妹的胰岛素剂量(她刚刚被诊断出患有 1 型糖尿病)。
等式如下所示:
(当前血糖 - 目标血糖)/她的校正因子
例如。她的目标是 120,校正因子是 80。测量时,BG 恰好是 260,所以:
(260-120)/80 = 1.75
(表示 1.75 单位的胰岛素)
这就是我卡住的地方 - 有一个糖尿病安全问题,答案被四舍五入到最接近的 .5(在上面的例子中这意味着 1.5 个单位)。但是,如果答案 >.85 则四舍五入 up
例如。 1.86 将四舍五入为 2.00
我已经尝试了几种方法,但要么我的语法有误,要么它似乎变成了一种非常困难(漫长)的方法。
有谁知道是否有 library/function 来简化此操作或知道如何有效地执行此操作?
您可以用它来四舍五入:
import math
def round_insulin(val):
i = math.floor(val)
decimal = val - i
if decimal >= 0.85:
return i + 1
elif decimal >= 0.46:
return i + 0.5
else:
return i
您可以使用以下函数来完成您需要的操作。
# Function
def special_round(current, target, correction_f):
dosing = (current - target) / correction_f
print(f'Original dosing:\t{dosing}')
dosing_decimal = dosing % 1
dosing_int = dosing // 1
if (dosing_decimal > 0.85):
rounded_dosing = dosing_int + 1
elif (dosing_decimal>0.5):
rounded_dosing = dosing_int + 0.5
else:
rounded_dosing = dosing_int
print(f'Rounded dosing: \t{rounded_dosing}')
return rounded_dosing
# Implementation
rounded_dosing = special_round(current=260, target=120, correction_f=80)
我刚开始在学校学习 Python。我正在尝试编写一个程序来进行简单的计算,以确定我妹妹的胰岛素剂量(她刚刚被诊断出患有 1 型糖尿病)。
等式如下所示:
(当前血糖 - 目标血糖)/她的校正因子
例如。她的目标是 120,校正因子是 80。测量时,BG 恰好是 260,所以:
(260-120)/80 = 1.75
(表示 1.75 单位的胰岛素)
这就是我卡住的地方 - 有一个糖尿病安全问题,答案被四舍五入到最接近的 .5(在上面的例子中这意味着 1.5 个单位)。但是,如果答案 >.85 则四舍五入 up
例如。 1.86 将四舍五入为 2.00
我已经尝试了几种方法,但要么我的语法有误,要么它似乎变成了一种非常困难(漫长)的方法。
有谁知道是否有 library/function 来简化此操作或知道如何有效地执行此操作?
您可以用它来四舍五入:
import math
def round_insulin(val):
i = math.floor(val)
decimal = val - i
if decimal >= 0.85:
return i + 1
elif decimal >= 0.46:
return i + 0.5
else:
return i
您可以使用以下函数来完成您需要的操作。
# Function
def special_round(current, target, correction_f):
dosing = (current - target) / correction_f
print(f'Original dosing:\t{dosing}')
dosing_decimal = dosing % 1
dosing_int = dosing // 1
if (dosing_decimal > 0.85):
rounded_dosing = dosing_int + 1
elif (dosing_decimal>0.5):
rounded_dosing = dosing_int + 0.5
else:
rounded_dosing = dosing_int
print(f'Rounded dosing: \t{rounded_dosing}')
return rounded_dosing
# Implementation
rounded_dosing = special_round(current=260, target=120, correction_f=80)