C ++打印奇怪的表现

时间:2014-01-04 21:17:10

标签: c++ printf

我遇到了C ++问题:

#include<iostream>
#include<stdio.h>

using namespace std;

int main() {
    double k = 1.2366;
    cout << printf("%.3lf\n", k);
}

输出是:

1.237
6

但我希望:

1.237

为什么我在第二行获得额外的6?

2 个答案:

答案 0 :(得分:5)

好吧,您先拨打printf打印出该号码,然后将printf(打印的字符数)的结果流式传输到cout

答案 1 :(得分:4)

这是因为printf返回打印字符数。为了使您的代码正确,只需直接使用std::cout所需的精度:

std::cout << fixed << setprecision(3);
std::cout << k << "\n";

如果您想要对结果进行舍入,请阅读指向您的How do you round off decimal places in C++?,例如楼/小区/圆。但是如果再次使用它,请注意不要对值本身进行舍入。