乡亲!我遇到了一个小问题:我正在使用三个double值进行简单的添加.结果的精度小于使用的值.
double minutes = 3;
minutes = minutes / (24.0*60.0); // contains 0.00208333
double hours = 3;
hours = hours / 24.0; // contains 0.125
double days = 3; // contains 3
double age = days + hours + minutes; // result is 3.12708
Run Code Online (Sandbox Code Playgroud)
我发现无法避免这种行为.
我有一个代码如下:
double a = 50e-12;
double b = 50.5e-12;
double c = b - a;
std::cout<<"value of a,b and c is : "<<a<<" " <<b<<" "<<c<<std::endl;
Run Code Online (Sandbox Code Playgroud)
现在我的输出是:a,b和c的值是:0.0000000001 0.0000000001 0.0000000000
我可以看到我的操作数已经四舍五入,因此我得到一个0作为输出,虽然我期望0.5.
有人可以帮我弄这个吗.?
我在Manjaro 64位,最新版本.惠普展馆g6,Codeblocks版本13.12 rev 9501(2013-12-25 18:25:45)gcc 5.2.0 Linux/unicode - 64位.
学生之间就为什么进行了讨论
所以决定写一个关于它的程序,只是为了向他们展示他们可以期待什么样的输出
#include <iostream>
#include <math.h>
#include <fstream>
using namespace std;
int main()
{
long double sn =0, sn2=0; // sn2 is 1/n^2
ofstream myfile;
myfile.open("/home/Projects/c++/test/test.csv");
for (double n =2; n<100000000;n++){
sn += 1/n;
sn2 += 1/pow(n,2);
myfile << "For n = " << n << " Sn = " << sn << " and Sn2 = " << sn2 << endl;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试从c ++中的文本获取值(所有十进制数字)。但我有一个问题,我无法解决
#include "pch.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
int main()
{
std::ifstream infile("C:\\thefile.txt");
float a, b;
while (infile >> a >> b)
{
// process pair (a,b)
}
std::cout << a << " " << b;
}
Run Code Online (Sandbox Code Playgroud)
thefile.txt:
34.123456789 77.987654321
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,
a = 34.1235
b = 77.9877
Run Code Online (Sandbox Code Playgroud)
但我想要
a = 34.123456789
b = 77.987654321
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
编辑:我不想打印出a和b。我只希望他们得到确切的值。