c语言把科学记数法变成小数,小数的处理c语言

发布时间:2023-01-06

本文目录一览:

  1. c语言怎么让输出值是小数?
  2. C++如何把科学计数法转成正常数
  3. c语言,输出科学计数法
  4. 在c++课上用科学计数法咋样表示小数
  5. 怎么把科学计数法字符串转换成浮点类型
  6. VC中如何使用科学计数法表示小数?

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

  1. 函数名:atof
  2. 声明:double atof(const char *nptr);
  3. 头文件:#include <stdlib.h>
  4. 功能:将参数 nptr 中的字符串转为浮点型数据并返回。
  5. 注意事项:必须是合法的字符串,即以实数形式或者科学计数法形式存储的字符串才可以进行转换,否则转换会出错。例如 "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)