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 ạ!
Bài liên quan
Điểm gì?
stackoverflow.com
Convert float to string with set precision & number of decimal digits?
Tức là thay vì in ra
string name
là123.456000
như trên thì mình muốn nó chỉ in123.456
thôi ấy anh.Cách trong link là bỏ vào
stringstream
rồi dùngsetprecision
để 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ùngsetprecision()
?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;
Ừ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)
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ó.