使用unitpy得到错误的结果?

问题描述 投票:0回答:1

以下所有三个语句都打印相同的属性,但为什么最后一条语句打印 0 电子伏特?

导入 scipy from unitpy import U、Q、单位、数量 ...

def print_properties(q):
    print(q.unit)
    print(q.dimensionality)
    print(q.dimensionless)
    print(q.base_unit)

if __name__ == '__main__':

    wave_length = 6.2E-6
    E = scipy.constants.h * scipy.constants.c / wave_length
    unitE = E * U("joule")
    unitE = unitE.to("eV")
    unitW = 0.1 * U("eV")
    print_properties(unitE)
    print_properties(unitW)
    print_properties(unitE - unitW)

    print(unitE)  # 0.1999744579 electronvolt
    print(unitW)  # 0.1 electronvolt
    print((unitE-unitW))  # 0 electronvolt????

我期望最后的打印语句给出 0.0999744579 电子伏特。 所有三个 print_properties 调用都给出了一些结果,数量是电子伏特

python units-of-measurement
1个回答
0
投票

这是库的一个错误,正如您在实现中看到的那样。 (

value
是 eV 的
1.6e-19
。因为
_precision
是 10,所以
round(value, _precision)
变成零。)为什么不在这里报告

由于该项目正处于孵化阶段,我建议使用成熟且流行的库,例如Pint

© www.soinside.com 2019 - 2024. All rights reserved.