首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以用Python以一种特定的方式舍入整数

是否有一种方法可以用Python以一种特定的方式舍入整数
EN

Stack Overflow用户
提问于 2022-02-20 06:06:24
回答 2查看 63关注 0票数 0

我刚开始在学校学Python。我正在编写一个程序来做一个简单的计算,确定我妹妹的胰岛素剂量(她刚刚被诊断出患有1型糖尿病)。

方程如下:

(当前血糖-目标血糖)/她的校正因子

例如。她的目标是120,校正因子是80。当测量时,BG恰好是260,所以:

(260-120)/80 = 1.75 (意为胰岛素的1.75单位)

这里是我被困的地方-有一个糖尿病的安全问题,答案被四舍五入到最近的.5 (在上面的例子,这意味着1.5个单位)。但是,如果答案是>.85,则会对其进行舍入

例如。1.86将四舍五入至2.00

我尝试过几种方法,但我的语法要么错了,要么它似乎变成了一种非常困难(长时间)的方法。

有没有人知道是否有一个库/函数来简化这个操作,或者对如何有效地完成这个操作有一个想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-20 06:13:54

你可以用这个对数字进行四舍五入:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2022-02-20 06:21:57

您可以使用以下函数来完成所需的任务。

代码语言:javascript
复制
# 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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71191745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档