01/10/2018, 17:16

Làm sao để bỏ phần thừa trong phần thập phân của số thực khi chuyển sang string

Mình có 1 đoạn code đơn giản sau để chuyển từ 1 số thực double sang 1 chuỗi string bằng to_string():

#include <iostream>
#include <string>

using namespace std;

int main()
{
    double f = 123.456;
    string name = to_string(f);
    cout << name;
    return 0;
}

Kết quả output là 123.456000
Cả compiler của IDEone cũng thế: https://ideone.com/Rfx11M
Không biết có ai biết cách khắc phục điểm này không chỉ cho mình với ạ!

Trương Tấn Phát viết 19:27 ngày 01/10/2018

Điểm gì?

stackoverflow.com
Shannon

Convert float to string with set precision & number of decimal digits?

c++, string, floating-point
asked by Shannon on 10:30PM - 22 Mar 15

Secret viết 19:22 ngày 01/10/2018

Tức là thay vì in ra string name123.456000 như trên thì mình muốn nó chỉ in 123.456 thôi ấy anh.
Cách trong link là bỏ vào stringstream rồi dùng setprecision để quy định số chữ số phần thập phân. Nhưng ở trên phần thập phân chỉ dư mấy số 0 ở đuôi chứ mình có biết có bao nhiêu chữ số phần thập phân đâu mà dùng setprecision() ?

Nguyễn Đình Anh viết 19:23 ngày 01/10/2018

for từ cuối String: Nếu phần tử đó là “0” thì xóa nó đi, còn nếu nó khác “0” thì break;

Secret viết 19:21 ngày 01/10/2018

Ừm, cách này khả thi, nhưng ngoài cách này ra thì còn cách nào ngắn hơn không bạn? (kiểu như chỉ 1 hàm khác để fix chứ ko phải thủ công bằng cách dùng for và delete)

rogp10 viết 19:19 ngày 01/10/2018

Thường người ta yêu cầu lấy 1, 2, 3 chữ số thập phân thôi bạn; nên chỉ có hàm đó thôi.

Sâu xa hơn, những chữ số phía sau có thể là rác (0.1 + 0.2 = ?), do độ chính xác bị hạn chế nên cái use-case của bạn ko có.

Bài liên quan
0