Tôi đang lập trình một chương trình java đơn giản. Tôi cần lấy một chuỗi từ đầu vào và chia thành hai phần: 1-double 2-string. Sau đó, tôi cần phải thực hiện một phép tính đơn giản trên đôi và gửi kết quả đến đầu ra với độ chính xác cụ thể (4). Nó hoạt động tốt, nhưng có một vấn đề khi đầu vào là 0, sau đó nó không hoạt động đúng.Giá trị kép với độ chính xác cụ thể trong java
Ví dụ cho các đầu vào, đầu ra sẽ là:
1 kg
đầu ra: 2,2046
3.1 kg
đầu ra: 6,8343
Nhưng khi đầu vào là 0, sản lượng nên là 0,0000, nhưng nó cho thấy 0,0. Tôi nên làm gì để buộc nó hiển thị 0,0000?
Tôi đọc bài tương tự về độ chính xác gấp đôi, họ đề nghị một cái gì đó giống như BigDecimal
lớp, nhưng tôi không thể sử dụng chúng trong trường hợp này, mã của tôi để làm điều này là:
line=input.nextLine();
array=line.split(" ");
value=Double.parseDouble(array[0]);
type=array[1];
value =value*2.2046;
String s = String.format("%.4f", value);
value = Double.parseDouble(s);
System.out.print(value+" kg\n");
Hãy thử "% 0.4f". Điều đó có nghĩa là 'định dạng một giá trị dấu chấm động, dán nó với số không cho đến khi bạn có 4 chữ số'. – user268396
tôi đã sử dụng "% .4f", nhưng nó cho thấy lỗi này: Ngoại lệ trong chuỗi "chính" java.util.MissingFormatWidthException: 0.4f – MehrdadSComputer
Xem thêm http://stackoverflow.com/questions/10959424/show-only-two- chữ số sau dấu thập phân nhưng đây không phải là một bản sao của điều đó vì định dạng muốn cho 0. – Raedwald