printf()和precision修饰符中的e格式

问题描述 投票:1回答:5

您能否解释一下为什么行:

printf(“ Value%2.2e”,1201.0);

给出结果:Value 1.20e + 03

不仅是12.01e2?

我的想法:默认数字是1201.0,说明符告诉您数字后应有2个数字。

请向我解释哪里错了?

c printf format-specifiers
5个回答
4
投票

根据Wikipedia

在归一化的科学计数法中,选择指数b使得a的绝对值至少为1但小于十(1≤| a | <10)。因此350被写为3.5×10 2。这种形式可以轻松比较数字,因为指数b给出了数字的数量级。在归一化表示法中,指数b对于绝对值在0到1之间的数字为负(例如,0.5表示为5×10 -1)。当指数为0时,通常会省略10和指数。归一化的科学形式是许多领域中大量表达的典型形式,除非需要非归一化形式,例如工程符号。标准化的科学记数法通常称为指数记数法,尽管后者更为笼统,并且也适用于a不限于范围1到10(例如在工程记数法中)和除10以外的底数(在3.15×2中)

20

)。


2
投票
%e格式使用科学符号,即小数点分隔符前的一位数字和一个用于缩放的指数。您无法使用此格式设置数字

before


1
投票
这就是科学符号的定义方式。您期望的结果是一个非常奇怪的符号。我认为您无法通过printf获得它。

1
投票
2中的第一个"%2.2e"是要打印的

最小


0
投票
#include <stdio.h> void answer(void) { for (int i = 0; i != 3; i++) putchar('.'); printf("\n%s\n", "https://en.wikipedia.org/wiki/Scientific_notation"); return; }
© www.soinside.com 2019 - 2024. All rights reserved.