格式化复数

2024-02-26

对于我的一个课程中的一个项目,我们必须输出最多五位小数的数字。输出可能是一个复数,而我无法弄清楚如何输出具有五位小数的复数。对于花车我知道它只是:

print "%0.5f"%variable_name

复数有类似的东西吗?


您可以使用如下所示的方法进行操作str.format() method:

>>> 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)'

更新 - 更简单的方法

虽然你cannot use 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))

Output:

TypeError: float argument required, not complex

You can但是通过以下方式将其与复数一起使用str.format()方法。这没有明确记录,但隐含在格式规范迷你语言 https://docs.python.org/3/library/string.html?highlight=formatting#format-specification-mini-language文档只是说:

'f'固定点。将数字显示为定点数。默认精度为6.

。 。 .所以很容易被忽视。 具体而言,以下内容在 Python 2.7.14 和 3.4.6 中均有效:

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

Output:

n1: 3.10+4.20j
n2: 3.10-4.20j

这并不能让您完全控制我原来答案中的代码,但它肯定更加简洁(并且自动处理正虚部和负虚部)。

更新2 -F 弦

格式化字符串文字 https://docs.python.org/3/reference/lexical_analysis.html#formatted-string-literals (aka F 弦) 是在 Python 3.6 中添加的,这意味着在该版本或更高版本中也可以这样完成:

print(f'n1: {n1:.2f}')  # -> n1: 3.40+2.30j
print(f'n2: {n2:.3f}')  # -> n2: 3.400-2.300j

在 Python 3.8.0 中,支持=说明符加入 https://docs.python.org/3.8/whatsnew/3.8.html#f-strings-support-for-self-documenting-expressions-and-debugging到 f 字符串,允许您编写:

print(f'{n1=:.2f}')  # -> n1=3.40+2.30j
print(f'{n2=:.3f}')  # -> n2=3.400-2.300j
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

格式化复数 的相关文章

随机推荐

  • 在数据框中对因子进行数字重新排序

    我有从 0 到 39 的因数 现在它们的排序方式如下 gt levels items label 1 0 1 10 11 12 13 14 15 16 17 18 19 13 2 20 21 22 23 24 25 26 27 28 29
  • 根据(多个)条件分成组?

    我有一组不同颜色和重量的弹珠 我想根据它们的重量和颜色将它们分成几组 条件是 一组重量不能超过 100 个单位 一组中不同颜色的弹珠不得超过 5 个 一个可重现的例子 marbles lt data frame color sample 1
  • 我可以同时变基和压缩提交吗?

    当我对之前几次提交的更改进行修复时 我总是会连续运行两次 rebase 是否可以一步完成此工作流程 假设我有 4 个新提交 master D C B A Base 我在 B 中发现了一个错误 所以我创建了一个分支并修复它 master D
  • 我可以访问 iPhone 上的钥匙串吗?

    这个问题讨论 iPhone 上的数据加密 https stackoverflow com questions 189925 password encryption in iphone apps使用 crypt 函数 作为替代方案 iPhon
  • 按元组成员映射元组列表

    假设我有一个列表decimal decimal let tup 1M 2M 2M 3M 3M 3M 4M 5M 5M 6M 7M 6M 8M 9M 10M 9M 我需要一个函数 如果可以连接的话 可以将所有值分组在一起 例如 map 100
  • 如何选择 jq 中作为变量提供的键的值?

    如果这是输入 a key 2 another key 100 one more key 4 2 通过提供键的名称作为变量来选择这些键的值的最佳方法是什么 理想情况下 我正在寻找类似的东西 a key as key key 但这会导致语法错误
  • 片段和活动之间的核心区别是什么?哪些代码可以写成fragment?

    我有三个选项卡 每个选项卡三个片段和一个主要活动 我想创建套接字以通过 wifi 网络发送消息 那么我应该在哪里编写代码呢 在那个特定的片段类或主要活动中 当然 您可以在片段中编写任何代码 但您需要注意一些事情 在访问需要上下文的任何内容或
  • 如何为目标计数器设置计数器

    在分页媒体中 CSS 属性target counters http www w3 org TR css3 gcpm the target counter and target counters v可用于包含多个计数器 该规范给出了以下示例
  • Webpack ProvidePlugin 全局变量(找不到模块)

    我对 Webpack 还很陌生 但不明白为什么我的 ProvidePlugin 调用没有按预期工作 我有以下文件 App js var App function getSomething function size module expor
  • 输入二进制而不是十六进制[重复]

    这个问题在这里已经有答案了 可能的重复 我可以在 C 或 C 中使用二进制文字吗 https stackoverflow com questions 2611764 can i use a binary literal in c or c
  • Gradle 和多项目结构

    我试图了解应该如何进行以下项目设置 Top Android Project Project 1 Pure Java Modules Module A1 Module B1 Module Z1 Project 2 Android Librar
  • 如何在rails中后台运行rake任务

    这是我的命令 bundle exec rake resque work QUEUE trace 我想在我的服务器上作为后台进程运行此命令 请帮我 我经常使用的一个方法是 nohup bundle exec rake resque work
  • 如何创建 gzip 压缩的 HTTP::Response?

    我需要使用压缩数据创建 HTTP Response 我该如何对内容进行压缩 我是否只需添加适当的标头并使用 Compress Zlib 自行压缩它 或者 LWP 模块是否提供了处理此问题的方法 这是你需要的吗 您对数据进行压缩 设置内容编码
  • 从 Python 中打开的 Excel 文件中读取

    我有一个脚本每隔几个小时从 Excel 文件中提取数据 但是 如果这些 Excel 文件之一打开 我仍然希望能够读取它 在 python openpyxl 中 当我尝试执行此操作时 出现权限错误 以下是我尝试过的 我认为我可以捕获异常并创建
  • 暂停交易是什么意思?

    如果我们使用 Propagation Requires new 那么它会挂起现有事务并创建一个新事务 那么这意味着什么suspends a transaction 暂停的交易会怎样 幕后究竟发生了什么 update 暂停的事务持有的资源会发
  • scala 列表地图与mapConserve

    我试图理解mapConserve 据说 像xs map f 但如果函数f将所有元素映射到自身 则返回xs不变 来自List http www scala lang org api current index html scala colle
  • Java 8 - 无法在数组类型 Enum[] 上调用stream() [重复]

    这个问题在这里已经有答案了 为什么我无法调用stream 关于数组类型Enum DummyEnum array DummyEnum values array stream Compile Error ENUM public enum Dum
  • 如何使用 Java 获取我的电脑中可用串行端口的列表?

    我只是运行一些代码来获取计算机上的可用端口列表 当我有 3 个空闲的 com 端口时 它返回 false 我该如何解决这个问题 我的代码 public static void main String args SerialParameter
  • JavaScript 让 Firefox 开发者工具调试视图中的块作用域

    我正在调查该机构的工作情况let 块作用域在 JavaScript 中 特别是浏览器的调试视图如何显示信息 Using let在一个for循环创建一个块作用域 其中回调function timeoutHandler 可以访问 一切都很好 I
  • 格式化复数

    对于我的一个课程中的一个项目 我们必须输出最多五位小数的数字 输出可能是一个复数 而我无法弄清楚如何输出具有五位小数的复数 对于花车我知道它只是 print 0 5f variable name 复数有类似的东西吗 您可以使用如下所示的方法