python - 检查范围的长度除以范围元素是否没有除余
问题描述
如果数组中的元素个数不是整数类型的数字,下面的代码将显示一个特定的注释。它适用于dr=0.5
但不适用于dr=0.1
因为print (4%0.1)
返回0.09999999999999978
而不是0
.
如何更改代码以获取4%0.1==0
?
import math
limits_real=(-2,2)
dr=0.1
if (limits_real[1]-limits_real[0])%dr!=0:
print ('Inapropriate limits or elements')
解决方案
它适用于 dr=0.5 但不适用于 dr=0.1,因为 print (4%0.1) 返回 0.09999999999999978 而不是 0。
因为浮点数有每个程序员都应该知道的限制,请参阅: https ://docs.python.org/3/tutorial/floatingpoint.html
如上述文档末尾所示,您可以使用decimal
模块,它工作得完全正确,但比普通浮点算法慢:
from decimal import Decimal
limits_real=(-2,2)
dr = Decimal("0.1")
if (limits_real[1] - limits_real[0]) % dr != 0:
print ('Inapropriate limits or elements')
请注意,您应该使用str
while 构造Decimal
实例,不要使用float
.
推荐阅读
- android - Viewpager 与 ViewPager2 之间有什么好处或差异
- servlets - 使用来自 csv 的输入在 AEM 中动态创建页面
- android - 无法在 android 11 中写入和打开文件
- java - Java Socket 仅第一次发送数据
- daml - '$' 运算符是什么?
- ios - 如何在 Swift 中完成所有单元格数据加载之前不显示 tableView
- bash - 计算 2 个给定时间之间的毫秒差
- javascript - 将 PHP 数组读入 NodeJS 函数
- python - 在 Django 视图中检索 Select2 多值以在后端使用
- vba - Word VBA - 如何插入标题编号的引用;标题文字;要评论的列表项编号和列表项页码?