2010-01-29 42 views
5

Tôi cần xuất số theo ký hiệu khoa học sao cho luôn có dấu "0" trước dấu thập phân.Đầu ra định dạng

ví dụ: Đối với số x = 134.87546, tôi cần phải xuất kết quả 0.134875E03 NOT 1.348755E02

Có ai biết cách thực hiện việc này không?

Cảm ơn trước --Shiraz.

Trả lời

0
int exponent = floor(log10(num)) + 1; 

Sau đó, chỉ in "0", số không có số thập phân "E", sau đó là số mũ.

+0

'log() 'là nhật ký tự nhiên, trong thư viện chuẩn C. Bạn muốn 'log10()'. – Amber

+0

Ngoài ra, 'ceil (log10 (num))' sẽ trả về '1' nếu đầu vào là' 10' và '0.' nối với' 10' là '0.10', khi nhân với' 10^1' là '1.0' không bằng' 10'. Bạn thực sự muốn sàn nhà, cộng với 1. – Amber

+0

@Dav, Ah, cảm ơn. Tôi đã không sử dụng stdmath trong một thời gian dài vì vậy tôi chỉ cần thêm bình luận mà tôi có nghĩa là log10. Ngoài ra, tôi đã không xem xét trường hợp mà quyền hạn của 10 là số nguyên cho log10, và bạn nói đúng. – strager

3
int exp = (int)log10(input)+1; 
double shifted = input/pow(10.0, exp); 
printf("%fE%d", shifted, exp); 
0

Bạn có thể điều tra bằng cách sử dụng Boost Format library là thư viện định dạng đầu ra chung.

+1

Tôi khá chắc chắn rằng những người thao tác cố định/khoa học không thực sự có thể khiến đầu ra luôn có số 0 trước dấu thập phân - chúng được thiết kế cho ký hiệu chuẩn, là một chữ số (không phải là số 0) trước dấu thập phân. – Amber

+0

@ Dav Ooops ... Tôi nghĩ đó là cách những người thao túng hành xử. Xóa nó khỏi câu trả lời của tôi (và bình chọn bình luận của bạn;) – Yukiko

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