如果在函数中将数字四舍五入,则将其四舍五入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在函数中将数字四舍五入,则将其四舍五入相关的知识,希望对你有一定的参考价值。
我是python的新手,我想弄清楚如何在此函数内四舍五入一个数字。
from math import *
import math
def complex_image(x,y,modulus):
phase1 = math.cos(math.radians(x))
phase2= math.sin(math.radians(y))
image = modulus * ( phase1 + phase2 * 1j)
return image
cx = complex_image(90,90,1)
print(f'The complex image is = {cx}')
The complex image is = (6.123233995736766e-17+1j)
它返回的值只能算作0 + 1j
如果我要给此函数值complex_image(45,45,2 / sqrt(2),它将返回:
The complex image is = (1+0.9999999999999998j)
[我将如何编写条件,例如,如果阶段1的值为6.123233995736766e-17(一个非常接近0的数字)以将其舍入为0?
我已经尝试过了:
phase1 = round(math.cos(math.radians(x)))
phase2= round(math.sin(math.radians(y)))
但是由于这种变化,我的结果可能会出现错误,例如:阶段1,四舍五入的complex_image(-45,-45,4 / sqrt(2)变为:
The complex image is = (2.82842712474619-2.82842712474619j)
没有回合,结果是:
The complex image is = (2-1.9999999999999996j)
这确实是正确的答案,但我希望将其完美地舍入为2-2j
答案
from math import *
import math
def complex_image(x,y,modulus):
phase1 = math.cos(math.radians(x))
phase2= math.sin(math.radians(y))
image = modulus * ( phase1 + phase2 * 1j)
image = round(image.real, 8) + round(image.imag, 8)*1j
return image
cx = complex_image(90,90,1)
cx = complex_image(45,45,2/sqrt(2))
print(f'The complex image is = {cx}')
round(num,b)可以使num精确到b个小数位。希望这能解决您的问题。我认为直接使用round(num)并不能解决您的问题,因为您将始终获得复杂的整数。
另一答案
您想将数字四舍五入到计算的end;在乘以模数之后,而不是之前。
如果您要使用复数进行几种不同的计算,可能会很有用,拥有一个仅用于四舍五入的函数可能会很有用。
def round_complex(z, ndigits=0):
return round(z.real, ndigits) + 1j * round(z.imag, ndigits)
用法:
>>> print('The complex image is', round_complex(cx, 8))
The complex image is (2-2j)
以上是关于如果在函数中将数字四舍五入,则将其四舍五入的主要内容,如果未能解决你的问题,请参考以下文章
js中的parseFloat()如果实部值大于14位,则将数字四舍五入[duplicate]