当前位置:  开发笔记 > 编程语言 > 正文

长双没有提供所需的精度

如何解决《长双没有提供所需的精度》经验,为你挑选了1个好方法。

我正在读取一个文件,该文件的值具有指数值的7位精度

4.81591e-007

5.17968e-007

5.03954e-008

-8.30735e-007

虽然我得到的值只有5点精度

0.000000

0.000001

0.000000

-0.000001

-0.000002

代码如下,是

#include
#include
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;    
int main()
{
    FILE *fp2;
    fp2=fopen("output","w");
    int i=0;
    ifstream myFile;
    myFile.open("sruthi_DATA_.txt");
    vectornumberlist;
    long double number;
    while(myFile >> number){    //
            numberlist.push_back(number);
            i++;
    }
    int j;
    for(j=0;j

Martin York.. 5

尝试将值打印为 fixed

http://www.cplusplus.com/reference/iomanip/setprecision/
http://www.cplusplus.com/reference/cstdio/printf/

 std::cout << std::fixed << std::setprecision(10) << value << "\n";

定义:

 fixed:       the value is represented with exactly as many digits in
              the decimal part as specified by the precision field
              (precision) and with no exponent part.

 scientific:  as many decimal digits as the precision field
              (precision). Finally, this notation always includes an
              exponential part consisting on the letter e followed by
              an optional sign and three exponential digits.

用于在C中打印:

  fprintf(fp2, "%.10f\n", value);

格式说明符的定义是:

  %[flags][width][.precision][length]specifier

  Precision: For a, A, e, E, f and F specifiers: this is the number
             of digits to be printed after the decimal point.

因此,要获得与C(%f)相同的C++格式,您需要使用std::fixed.



1> Martin York..:

尝试将值打印为 fixed

http://www.cplusplus.com/reference/iomanip/setprecision/
http://www.cplusplus.com/reference/cstdio/printf/

 std::cout << std::fixed << std::setprecision(10) << value << "\n";

定义:

 fixed:       the value is represented with exactly as many digits in
              the decimal part as specified by the precision field
              (precision) and with no exponent part.

 scientific:  as many decimal digits as the precision field
              (precision). Finally, this notation always includes an
              exponential part consisting on the letter e followed by
              an optional sign and three exponential digits.

用于在C中打印:

  fprintf(fp2, "%.10f\n", value);

格式说明符的定义是:

  %[flags][width][.precision][length]specifier

  Precision: For a, A, e, E, f and F specifiers: this is the number
             of digits to be printed after the decimal point.

因此,要获得与C(%f)相同的C++格式,您需要使用std::fixed.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有