2012-09-16 39 views
35

thể trùng lặp:
Why can't I return a double from two ints being dividedChia hai số nguyên để tạo ra một kết quả phao

chương trình My C++ được cắt bỏ đầu ra của devision số nguyên của tôi ngay cả khi tôi cố gắng và đặt đầu ra vào một phao. Làm thế nào tôi có thể ngăn chặn điều này trong khi vẫn giữ những biến đó (một số & b) làm số nguyên?

[email protected]:~/c/precision$ cat precision.cpp 
#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    int a = 10, b = 3; 
    float ans = (a/b); 
    cout<<fixed<<setprecision(3); 
    cout << (a/b) << endl; 
    cout << ans << endl; 
    return 0; 
} 

[email protected]:~/c/precision$ g++ -o precision precision.cpp 
[email protected]:~/c/precision$ ./precision 
3 
3.000 
+1

phao ans = ((float) a/b); (hoặc static_cast để làm hài lòng những người theo chủ nghĩa thuần túy) – Vlad

+0

Có lỗi của tôi, tôi đã tìm kiếm nhưng tôi không tìm thấy bài đăng đó. Đó là một sự lừa đảo, tệ hại của tôi! – jwbensley

Trả lời

60

Cast các toán hạng để nổi:

float ans = (float)a/(float)b; 
+0

Ngoài ra, phao chỉ có độ chính xác rất nhiều. Phân chia số nguyên của bạn có thể yêu cầu "độ chính xác kép" của một 'double' –

+15

Nói đúng ra bạn chỉ cần bỏ một số nguyên để nổi, mặc dù điều này không làm cho nó thêm rõ ràng. – Gerard

+0

'INT K; \t K/3; 'Ở đây'/'sẽ được gọi cho lớp' INT', vậy lý do đằng sau việc cast một int thậm chí chỉ định hay mẫu số sẽ làm việc là gì? – UnKnown

Các vấn đề liên quan