在打印浮点数时,如何更精确地打印小数位?

蓝色卡其色

我对编码很陌生,但遇到了一个非常基本的问题。我已经编写了一个执行基本方程式和printf结果的程序:

#include <stdio.h>

int main (void)
{
    float f = (380 / 3);
    
    printf("%f\n", f);
}

但是,我得到的结果是126.000000如何使我的程序更精确地打印出小数位?

chux-恢复莫妮卡

如何使我的程序更精确地打印出小数位?

步骤1,使用浮点FP数学,而不是整数数学。

// float f = (380 / 3);      // int math
// float f = 380.0f / 3.0f;  // float math
double f = 380.0 / 3.0;      // double math

步骤2:指定的精度应超过默认值6。

int prec = 7;
printf("%.*f\n", pre, f);

...或更好,使用指数表示法

printf("%.*e\n", FLT_DECIMAL_DIG, f); 

....甚至十六进制。

printf("%a\n", f); 

#include <float.h>
#include <stdio.h>

int main(void) {
  double f = 380.0 / 3.0;
  int prec = 7;
  printf("%.*f\n", prec, f);
  printf("%.*e\n", DBL_DECIMAL_DIG, f);
  printf("%a\n", f);
}

输出

126.6666667
1.26666666666666671e+02
0x1.faaaaaaaaaaabp+6

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何打印浮点数到n个小数位,包括尾随0?

如何将浮点数打印到n个小数位(包括尾随0)?

SQL 打印带有大小数位的浮点数

如何计算浮点数的小数位?

有没有办法自动将浮点数打印到它的小数位数?

如何可靠地将浮点数格式化为Haxe中指定的小数位数

数字输入错误地接受带小数位的浮点数

在Java中,如何删除整数形式的输出double的小数位,而当其为浮点数时保留它们?

打印浮点数的精确值

转换浮点数并保持小数位

MariaDB默认浮点数不能包含小数位

JavaScript格式的浮点数小数位数

打印小数位

如何将具有 n 个小数位的整数转换为浮点数

如何计算具有给定小数位的浮点数?

如何使用sprintf输出小于1且没有前导小数位的浮点数?

如何将小数位数转换为相同单位的浮点数?

如何计算浮点数和双精度数的小数位数?

我如何确定应使用多少小数位,用于c中的浮点数

如何在python中生成至少20个小数位的种子随机浮点数?

printf传递给变量的精度为浮点数(小数位数)的浮点数

浮点RNG是否应该更精确地接近0?

打印浮点数时如何抑制科学计数法?

如何格式化浮点数,最多“n”个小数位而没有尾随零

如何将浮点数转换为 varchar 而不丢失小数位?SQL Server 2012

如何将浮点数四舍五入到一定数量的小数位 Python

计算Swift中浮点数(或小数)的小数位数

在打印之前检查浮点数是否为偶数

如何从程序集打印浮点数?