本文目录一览:
c语言怎么让输出值是小数?
%d
整型输出%ld
长整型输出%o
以八进制数形式输出整数%x
以十六进制数形式输出整数%u
以十进制数输出 unsigned 型数据(无符号数)%c
用来输出一个字符%s
用来输出一个字符串%f
用来输出实数,以小数形式输出%e
以指数形式输出实数%g
根据大小自动选 f 格式或 e 格式,且不输出无意义的零
C++如何把科学计数法转成正常数
可以这样:
cout << std::scientific << a; // 科学计数法
cout << std::fixed << a; // 指定小数位
c语言,输出科学计数法
#include <stdio.h>
#include <string.h>
char num[110];
char result[110];
int len;
int main() {
int i, j;
int s1, s2; // 小数点位置,字符串首个非零数位置
int find1 = 0;
int find2 = 0; // find1: 是否找到小数点位置标志位,find2: 是否找到首个非零数位置,0:表示未找到
int index;
scanf("%s", num);
len = strlen(num); // 读取字符串长度
for (i = 0; i < len; ++i) { // 寻找原字符串中小数点与首个非零数的位置
if (find1 && find2)
break;
if (num[i] == '.') {
s1 = i;
find1 = 1;
} else if (num[i] != '0' && !find2) {
find2 = 1;
s2 = i;
}
}
if (s1 - s2 > 0) // 根据二个位置确定指数大小
index = s1 - s2 - 1;
else if (s2 < s1)
index = s1 - s2;
j = 0;
for (i = s2; i < len; ++i) { // 确定底数
if (num[i] == '.') // 跳过小数点
continue;
else if (i == s2) { // 确定底数小数点位置
if (num[i + 1]) {
result[j++] = num[i];
result[j++] = '.';
} else
result[j++] = num[i];
} else
result[j++] = num[i];
}
result[j] = '\0';
printf("%se%d\n", result, index);
return 0;
}
在c++课上用科学计数法咋样表示小数
举例:
- 1.23 x 10^5 = 1.23e5
- 3.21 x 10^(-2) = 3.21e-2
这里的
e
就是底数 10,e
后面的就是指数
怎么把科学计数法字符串转换成浮点类型
可以使用库函数 atof
:
- 函数名:
atof
- 声明:
double atof(const char *nptr);
- 头文件:
#include <stdlib.h>
- 功能:将参数
nptr
中的字符串转为浮点型数据并返回。 - 注意事项:必须是合法的字符串,即以实数形式或者科学计数法形式存储的字符串才可以进行转换,否则转换会出错。例如
"sjdhk"
这样的字符串是无法转换为浮点数的。而如果是"1.23sdf"
这样的形式,只会处理到最后一个数字,结果为1.23
。
示例代码
#include <stdlib.h>
int main() {
char *a = "-100.23"; // 实数形式存储的字符串
char *b = "200e-2"; // 科学计数法形式存储的字符串
double c;
c = atof(a) + atof(b); // 转换后为 -100.23 + 200e-2 = -100.23 + 2 = -98.23
printf("c=%.2lf\n", c); // 输出结果, 保留2位小数。期望结果为 c=-98.23
return 0;
}
VC中如何使用科学计数法表示小数?
由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。
其一般形式为:a E n
(a 为十进制数,n 为十进制整数)
其值为 a * (10^n)
例如:
2.1E5
(等于2.1 * (10^5)
)-2.8E-2
(等于-2.8 * (10^-2)
)