python格式化输出复数_格式化复数

您可以使用str.format()方法执行如下所示的操作:>>> n = 3.4+2.3j

>>> n

(3.4+2.3j)

>>> '({0.real:.2f} + {0.imag:.2f}i)'.format(n)

'(3.40 + 2.30i)'

>>> '({c.real:.2f} + {c.imag:.2f}i)'.format(c=n)

'(3.40 + 2.30i)'

要使它正确地处理正虚部和负虚部,您需要一个(甚至更多)复杂的格式化操作:>>> n = 3.4-2.3j

>>> n

(3.4-2.3j)

>>> '({0:.2f} {1} {2:.2f}i)'.format(n.real, '+-'[n.imag < 0], abs(n.imag))

'(3.40 - 2.30i)'

更新-更简单的方法

尽管不能使用f作为复数的表示类型,但使用字符串格式化运算符%:n1 = 3.4+2.3j

n2 = 3.4-2.3j

try:

print('test: %.2f' % n1)

except Exception as exc:

print('{}: {}'.format(type(exc).__name__, exc))

输出:TypeError: float argument required, not complex

但是,您可以通过str.format()方法将它与复数一起使用。这不是明确的文档,而是由Format Specification Mini-Language文档暗示的,该文档只是说:'f'  Fixed point. Displays the number as a fixed-point number. The default precision is 6.

。所以很容易被忽视。

具体来说,Python 2.7.14和3.4.6都可以使用以下代码:print('n1: {:.2f}'.format(n1))

print('n2: {:.2f}'.format(n2))

输出:n1: 3.10+4.20j

n2: 3.10-4.20j

这并没有像我最初的答案中的代码那样给你足够的控制权,但它肯定要简洁得多(并且自动处理正虚部和负虚部)。

更新2-f字符串

Python 3.6中添加了Formatted string literals(akaf-strings),这意味着在该版本或更高版本中也可以这样做:print(f'n1: {n1:.2f}') # -> n1: 3.40+2.30j

print(f'n2: {n2:.3f}') # -> n2: 3.400-2.300j

在Python 3.8.0中,支持=说明符was added到f字符串,允许您编写:print(f'{n1=:.2f}') # -> n1=3.40+2.30j

print(f'{n2=:.3f}') # -> n2=3.400-2.300j

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值