草庐IT

浮点数

全部标签

python - 测试浮点相等

在python中是否有测试浮点近似相等的函数?类似的,defapprox_equal(a,b,tol):returnabs(a-b)我的用例类似于Google的C++测试库gtest.h定义EXPECT_NEAR的方式。这是一个例子:defbernoulli_fraction_to_angle(fraction):returnmath.asin(sqrt(fraction))defbernoulli_angle_to_fraction(angle):returnmath.sin(angle)**2deftest_bernoulli_conversions():assert(approx

python - 指定刻度标签的浮点格式

我正在尝试在matplotlib子图环境中将格式设置为两个十进制数。不幸的是,我不知道如何解决这个任务。为了防止在y轴上使用科学记数法,我使用了ScalarFormatter(useOffset=False),如下面的片段所示。我认为我的任务应该通过将更多选项/参数传递给使用的格式化程序来解决。但是,我在matplotlib的文档中找不到任何提示。如何设置两位小数或不设置(两种情况都需要)?很遗憾,我无法提供示例数据。--片段--f,axarr=plt.subplots(3,sharex=True)data=conv_airx=range(0,len(data))axarr[0].sc

python - 指定刻度标签的浮点格式

我正在尝试在matplotlib子图环境中将格式设置为两个十进制数。不幸的是,我不知道如何解决这个任务。为了防止在y轴上使用科学记数法,我使用了ScalarFormatter(useOffset=False),如下面的片段所示。我认为我的任务应该通过将更多选项/参数传递给使用的格式化程序来解决。但是,我在matplotlib的文档中找不到任何提示。如何设置两位小数或不设置(两种情况都需要)?很遗憾,我无法提供示例数据。--片段--f,axarr=plt.subplots(3,sharex=True)data=conv_airx=range(0,len(data))axarr[0].sc

python - 步长为浮点型的范围

这个问题在这里已经有了答案:HowdoIuseadecimalstepvalueforrange()?(34个回答)关闭6年前。Thedocumentation基本上说range的行为必须与此实现完全相同(对于正step):defrange(start,stop,step):x=startwhileTrue:ifx>=stop:returnyieldxx+=step它还说它的参数必须是整数。这是为什么?如果step是float,这个定义不是也完全有效吗?就我而言,我是esp。需要一个接受浮点类型作为其step参数的range函数。Python中有没有,还是我需要自己实现?更具体:我如何

python - 步长为浮点型的范围

这个问题在这里已经有了答案:HowdoIuseadecimalstepvalueforrange()?(34个回答)关闭6年前。Thedocumentation基本上说range的行为必须与此实现完全相同(对于正step):defrange(start,stop,step):x=startwhileTrue:ifx>=stop:returnyieldxx+=step它还说它的参数必须是整数。这是为什么?如果step是float,这个定义不是也完全有效吗?就我而言,我是esp。需要一个接受浮点类型作为其step参数的range函数。Python中有没有,还是我需要自己实现?更具体:我如何

python - 单元测试(有时)失败,因为浮点不精确

我有一个类Vector代表3维空间中的一个点。这个向量有一个方法normalize(self,length=1)将矢量向下/向上缩放为length==vec.normalize(length).length.此方法的单元测试有时会因为float的不精确而失败。我的问题是,当方法正确实现时,如何确保此测试不会失败?是否可以不测试近似值?其他信息:deftestNormalize(self):vec=Vector(random.random(),random.random(),random.random())self.assertEqual(vec.normalize(5).length,

python - 单元测试(有时)失败,因为浮点不精确

我有一个类Vector代表3维空间中的一个点。这个向量有一个方法normalize(self,length=1)将矢量向下/向上缩放为length==vec.normalize(length).length.此方法的单元测试有时会因为float的不精确而失败。我的问题是,当方法正确实现时,如何确保此测试不会失败?是否可以不测试近似值?其他信息:deftestNormalize(self):vec=Vector(random.random(),random.random(),random.random())self.assertEqual(vec.normalize(5).length,

python - 将 Python 浮点值增加最小的可能量

如何在python中将浮点值增加最小的数量?背景:我使用浮点值作为字典键。偶尔,非常偶尔(也许永远不会,但不一定永远不会),会有碰撞。我想通过尽可能少地增加浮点值来解决这些问题。我该怎么做?在C中,我会旋转尾数位来实现这一点,但我认为这在Python中是不可能的。 最佳答案 从Python3.9开始,stdlib中有math.nextafter。继续阅读旧Python版本中的替代方案。Incrementapythonfloatingpointvaluebythesmallestpossibleamountnextafter(x,y)

python - 将 Python 浮点值增加最小的可能量

如何在python中将浮点值增加最小的数量?背景:我使用浮点值作为字典键。偶尔,非常偶尔(也许永远不会,但不一定永远不会),会有碰撞。我想通过尽可能少地增加浮点值来解决这些问题。我该怎么做?在C中,我会旋转尾数位来实现这一点,但我认为这在Python中是不可能的。 最佳答案 从Python3.9开始,stdlib中有math.nextafter。继续阅读旧Python版本中的替代方案。Incrementapythonfloatingpointvaluebythesmallestpossibleamountnextafter(x,y)

python - 打印浮点值时如何抑制科学计数法?

这是我的代码:x=1.0y=100000.0printx/y我的商显示为1.00000e-05。有什么方法可以抑制科学记数法并使其显示为0.00001?我将使用结果作为字符串。 最佳答案 使用较新版本的''.format(还要记得指定.后面要显示多少位,这取决于float有多小)。看这个例子:>>>a=-7.1855143557448603e-17>>>'{:f}'.format(a)'-0.000000'如上图,默认为6位!这对我们的案例没有帮助,因此我们可以使用如下内容:>>>'{:.20f}'.format(a)'-0.000