Làm cách nào để cắt bỏ các chữ số thập phân trong C mà không làm tròn?Làm thế nào để cắt thập phân mà không làm tròn trong C
Ví dụ nếu số là 4.48
nó sẽ chỉ hiển thị 4.4
%.1f
vòng để 4.5
Làm cách nào để cắt bỏ các chữ số thập phân trong C mà không làm tròn?Làm thế nào để cắt thập phân mà không làm tròn trong C
Ví dụ nếu số là 4.48
nó sẽ chỉ hiển thị 4.4
%.1f
vòng để 4.5
Đây là một cách đơn giản:
printf("%.1f",trunc(x*10.0)/10.0);
này nên làm việc
double d = 4.48;
d *= 10.;
int i = d;
d = (double) i/10.;
Bạn có thể (ab) sử dụng thực tế là sẽ cắt cụt bộ phận nguyên và không tròn:
float original = 4.48;
int tmp = original * 10; // 44.8 truncated to 44
float truncated = tmp/10.0; // 4.4
Để tránh quá trình chuyển đổi 'int', sử dụng' trunc *() 'như được trả lời [ở đây] (https://stackoverflow.com/a/12764022/2410359). Vẫn có thể có vấn đề về cạnh. – chux
Có lẽ an toàn hơn với '% .1f'. –
@DanielFischer: sửa đổi –