2013-04-29 106 views
15

论坛中已经讨论过类似的话题。但我在下面的代码一些不同的问题:在C++中显示小数点后的两位数

double total; 
cin>>total 
cout<<fixed<<setprecision(2)<<total; 

如果我给输入为100.00,然后程序打印仅有100而不是100.00

我如何打印100.00

+6

真的吗?它在我的系统上给出了100.00(好吧,它给出了一个错误的分号,但我修正后,它可以像我期望的那样工作)。也许你应该发布你一直在测试的ACTUAL代码。 – 2013-04-29 13:39:08

+0

你是否要求修复你的代码?或者你是否想要以任何方式打印带有两位小数的数字? 你应该发布你用来运行你的代码的编译器选项(或者至少是编译器),这将是非常有用的发现问题;) – Bengalaa 2013-12-27 15:30:41

回答

1

这可能与setiosflags(ios :: showpoint)。

+0

'showpoint'在这里不应该是必须的,因为他已经请求了2个小数点后的数字。他的代码是正确的,并应该给他说他想要的输出。 – 2013-04-29 14:19:22

50
cout << fixed << setprecision(2) << total; 

setprecision指定最小精度。所以

cout << setprecision (2) << 1.2; 

将打印1.2

fixed说,会有的小数位数的固定数量在小数点后

cout << setprecision (2) << fixed << 1.2; 

将打印1.20

+1

另外,'setprecision'的含义取决于浮点输出是如何格式化的:'fixed','scientific'或'floatfmt()'(默认值)。 – 2013-04-29 14:20:54

+0

此系统/实施是否依赖?许多人报告显示点不应该是必要的......这也是我的系统的情况。 – Antonio 2014-08-11 12:12:09

+0

@JamesKanze ['defaulfloat'](http://en.cppreference.com/w/cpp/io/manip/fixed)被添加到C++ 11 – nodakai 2016-04-22 15:34:58

2

最简单的方式做这是使用cstdio的printf。其实,我很惊讶,有人提到printf!无论如何,你需要包括图书馆,像这样......

#include<cstdio> 

int main() { 
    double total; 
    cin>>total; 
    printf("%.2f\n", total); 
} 

这将打印的价值“总” (这就是%,然后,total一样) 2浮动点(那是什么.2f确实)。而\n底,是线刚刚结束,这可与弗吉尼亚的法官在线编译器选项,那就是:

g++ -lm -lcrypt -O2 -pipe -DONLINE_JUDGE filename.cpp 

您尝试运行不会与此编译器选项运行代码.. 。

+0

这可能是有用的阅读http://stackoverflow.com/问题/ 2872543/printf-vs -cout-in-c: printf仍然可以在C++中使用,但是在特殊情况下。 – Antonio 2014-08-11 12:17:18

+1

大声笑,如何UVa判断,-lcrypt或任何其他编译器选项,甚至远程相关的问题? – 2016-10-14 02:51:57

+0

uhh,3年前我自己回答XD,当时,当我发现这个问题时,我开始使用竞争性编程,所以我认为我的答案中的这个“额外信息”可以帮助那些开始竞争的人编程以及:) – Bengalaa 2016-10-14 20:05:18

2

,能够在C打印15十进制数++使用以下:

#include <iomanip> 
#include <iostream> 

cout << fixed << setprecision(15) << " The Real_Pi is: " << real_pi << endl; 
cout << fixed << setprecision(15) << " My Result_Pi is: " << my_pi << endl; 
cout << fixed << setprecision(15) << " Processing error is: " << Error_of_Computing << endl; 
cout << fixed << setprecision(15) << " Processing time is: " << End_Time-Start_Time << endl; 
_getch(); 

return 0; 
+0

_“include ... include”_什么? – MickyD 2015-03-21 00:38:54

1

使用头文件stdio.h可以很容易地做到这一点照常如c。在使用%.2lf(在%说明符后面设置特定数字)之前,使用printf()。

它只是在小数点后printf特定数字。

#include <stdio.h> 
#include <iostream> 
using namespace std; 
int main() 
{ 
    double total=100; 
    printf("%.2lf",total);//this prints 100.00 like as C 
} 
相关问题