2013-04-29 87 views
15

Chủ đề tương tự đã được thảo luận trong diễn đàn. Nhưng tôi có một số vấn đề khác nhau trong đoạn mã sau:Hiển thị hai chữ số sau dấu thập phân trong C++

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

Nếu tôi đưa ra ý kiến ​​như 100.00 sau đó chương trình in ra chỉ 100 nhưng không 100.00

Làm thế nào tôi có thể in 100.00?

+6

Thật sao? Nó cung cấp cho 100,00 trên hệ thống của tôi (tốt, nó đưa ra một lỗi cho một dấu chấm phẩy mất tích, nhưng sau khi tôi cố định rằng nó hoạt động như tôi mong đợi nó). Có lẽ bạn nên đăng mã ACTUAL mà bạn đã thử nghiệm với. –

+0

bạn có yêu cầu sửa mã cho bạn không? hoặc bạn đang yêu cầu bất kỳ cách nào để in một số với hai số thập phân? bạn nên đăng các tùy chọn trình biên dịch (hoặc ít nhất, trình biên dịch) bạn đang sử dụng để chạy mã của mình, điều đó sẽ rất hữu ích để phát hiện vấn đề;) – Bengalaa

Trả lời

1

Điều này sẽ có thể với setiosflags (ios :: showpoint).

+0

'showpoint' không cần thiết ở đây, vì anh ta đã yêu cầu 2 chữ số sau dấu thập phân. mã của anh ta là chính xác, và nên cho đầu ra anh ta nói anh ấy muốn. –

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

setprecision xác định tối thiểu chính xác. Vì vậy,

cout << setprecision (2) << 1.2; 

sẽ in 1.2

fixed nói rằng sẽ có một số cố định của các chữ số thập phân sau dấu thập phân

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

sẽ in 1.20

+1

Ngoài ra, ý nghĩa của 'setprecision' phụ thuộc vào cách đầu ra dấu phẩy động được định dạng:' fixed', 'science' hoặc' floatfmt() '(mặc định). –

+0

Hệ thống/triển khai này có phụ thuộc không? Nhiều người đang báo cáo rằng điểm giới thiệu không cần thiết ... Và đó cũng là trường hợp của hệ thống của tôi. – Antonio

+0

@JamesKanze ['defaulfloat'] (http://en.cppreference.com/w/cpp/io/manip/fixed) đã được thêm vào C++ 11 – nodakai

2

Cách dễ nhất để làm này, đang sử dụng printf của cstdio. Trên thực tế, tôi ngạc nhiên rằng bất cứ ai đã đề cập printf! dù sao, bạn cần bao gồm thư viện, như thế này ...

#include<cstdio> 

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

này sẽ in giá trị của "tổng" (đó là những gì %, và sau đó ,total không) với 2 điểm nổi (đó là những gì .2f không). Và \n lúc kết thúc, chỉ là cuối dòng, và các công trình này với các tùy chọn biên dịch thẩm phán trực tuyến UVA, đó là:

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

mã bạn đang cố gắng để chạy sẽ không chạy với điều này tùy chọn biên dịch .. .

+0

Điều này có thể hữu ích khi đọc http://stackoverflow.com/ Câu hỏi/2872543/printf-vs-cout-in-c: printf vẫn có thể được sử dụng trong C++, nhưng trong trường hợp ngoại lệ. – Antonio

+1

Lol, làm thế nào là UVa thẩm phán, -lcrypt hoặc bất kỳ tùy chọn trình biên dịch khác thậm chí từ xa có liên quan đến câu hỏi? –

+0

uhh, 3 năm trước câu trả lời của bản thân mình XD, hồi đó, khi tôi tìm thấy câu hỏi này, tôi đã bắt đầu với lập trình cạnh tranh, vì vậy tôi nghĩ rằng "thông tin bổ sung" này trên câu trả lời của tôi có thể giúp mọi người bắt đầu với cạnh tranh lập trình cũng :) – Bengalaa

2

có thể in một số 15 chữ số thập phân trong C++ sử dụng như sau:

#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" _ what? – MickyD

1

sử dụng tập tin tiêu đề stdio.h bạn có thể dễ dàng làm điều đó như bình thường như c. trước khi sử dụng% .2lf (đặt một số cụ thể sau% specifier.) bằng cách sử dụng printf().

Nó chỉ cần in các chữ số cụ thể sau dấu thập phân.

#include <stdio.h> 
#include <iostream> 
using namespace std; 
int main() 
{ 
    double total=100; 
    printf("%.2lf",total);//this prints 100.00 like as C 
} 
Các vấn đề liên quan