Python中的模运算符

2024-04-20 04:15:26 发布

您现在位置:Python中文网/ 问答频道 /正文

下面代码中的模做什么?

from math import *
3.14 % 2 * pi

如何计算浮点数上的模?


Tags: 代码fromimportpimath浮点数
3条回答

和你对普通模的期望一样。。e、 g.7 % 4 = 37.3 % 4.0 = 3.3

注意浮点精度问题。

除了其他答案外,^{} documentation还有一些有趣的话题要说:

math.fmod(x, y)

Return fmod(x, y), as defined by the platform C library. Note that the Python expression x % y may not return the same result. The intent of the C standard is that fmod(x, y) be exactly (mathematically; to infinite precision) equal to x - n*y for some integer n such that the result has the same sign as x and magnitude less than abs(y). Python’s x % y returns a result with the sign of y instead, and may not be exactly computable for float arguments. For example, fmod(-1e-100, 1e100) is -1e-100, but the result of Python’s -1e-100 % 1e100 is 1e100-1e-100, which cannot be represented exactly as a float, and rounds to the surprising 1e100. For this reason, function fmod() is generally preferred when working with floats, while Python’s x % y is preferred when working with integers.

当你有这个表达式时:

a % b = c

它实际上意味着存在一个整数n,使得c尽可能小,但不是负的。

a - n*b = c

用手,你可以一遍又一遍地减去2(如果你的数字是负数,也可以加上2),直到最终的结果是可能的最小正数:

  3.14 % 2
= 3.14 - 1 * 2
= 1.14

此外,3.14 % 2 * pi被解释为(3.14 % 2) * pi。我不确定你是否打算写3.14 % (2 * pi)(在这两种情况下,算法都是一样的)。只需减/加,直到数字越小越好)。

相关问题 更多 >