有没有办法用 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)