python - 在 Python 中舍入一个数字
问题描述
我有一个非常简单的问题。我想将间隔从1e-6
to10e-6
分成十个值并将它们附加到列表中。出于这个原因,我制作了下面的程序,
start_value = 1e-6
stop_value = 10e-6
step_value = 10
step = (stop_value-start_value)/(step_value-9)
current_list = [start_value]
last_value = start_value
for i in range(step_value-1):
current_list.append(last_value + step)
last_value = last_value + step
print(current_list)
我得到以下结果,
[1e-06, 2e-06, 3e-06, 4e-06, 4.9999999999999996e-06, 5.999999999999999e-06, 6.999999999999999e-06, 8e-06, 9e-06, 1e-05].
当然,数字4.999999999e-6
和6.999999999e-6
应该是 5e-06
和7e-06
分别。为此,我使用了该round(**number** ,11)
方法。
start_value = 1e-6
stop_value = 10e-6
step_value = 10
step = (stop_value-start_value)/(step_value-9)
current_list = [start_value]
last_value = start_value
for i in range(step_value-1):
current_list.append(round(last_value + step, 11))
last_value = last_value + step
print(current_list)
还有其他方法可以做到这一点吗?
解决方案
你可以看看这个fractions
模块:
import fractions
start_value = fractions.Fraction(1, 1000000)
stop_value = fractions.Fraction(10, 1000000)
step_value = 10
step = fractions.Fraction(stop_value-start_value, (step_value - 1))
current_list = []
for i in range(step_value):
current_list.append(start_value + i * step)
默认输出维护一个Fraction
类型列表:
print(current_list)
[Fraction(1, 1000000), Fraction(1, 500000), Fraction(3, 1000000), Fraction(1, 250000), Fraction(1, 200000), Fraction(3, 500000), Fraction(7, 1000000), Fraction(1, 125000), Fraction(9, 1000000), Fraction(1, 100000)]
但是转换为原生数据类型很简单:
print([float(x) for x in current_list])
[1e-06, 2e-06, 3e-06, 4e-06, 5e-06, 6e-06, 7e-06, 8e-06, 9e-06, 1e-05]
推荐阅读
- flutter - 颤振构建apk AssemblyRealese失败
- javascript - 当我点击图片时,我试图弹出一个警报
- python - 如何将多步 mrjob 与 json 文件一起使用
- api - 使用 ADF SF 连接器将数据加载到 Salesforce
- python - 如何使用 Attention 实现多层 Seq2Seq 模型?
- linux - 从 PGAdmin 容器连接本地 postgres 数据库
- angular - 开玩笑:this.router.url。未定义
- javascript - 如何使用 onClick 函数 Jest/React 测试库测试 React 组件
- jira - 如何使用 Rest API 或 jira-ruby gem 获取 jira 项目中的所有板
- c# - 从 Html.BeginForm() 传递 id 值并在控制器中捕获时,Id 值显示为零