2015-12-19 12 views
5

Tôi có một gấp đôi rất lớn mà tôi muốn nhận được 2 chữ số thập phân đầu tiên làm nổi bật. Dưới đây là một ví dụ:Java nhận được 2 chữ số thập phân đầu tiên của một số

double x = 0.36843871 
float y = magicFunction(x) 
print(y) 

Output: 36

Nếu bạn không hiểu cảm thấy tự do để đặt câu hỏi.

+0

cho thấy việc thực hiện 'magicFunction' – Ramanlfc

+0

bạn cần 'chỉ' 2 số đầu tiên và lưu nó dưới dạng phao (hoặc) từ ví dụ của bạn để bạn có đầu ra là 36.843871 ?? –

+0

Tôi cần một đầu ra float không có chữ số thập phân. – ThatPixelCherry

Trả lời

6

Bạn có thể nhân lên bởi 100 và sử dụng Math.floor(double) như

int y = (int) Math.floor(x * 100); 
System.out.println(y); 

tôi nhận được (các yêu cầu)

36 

Lưu ý rằng nếu bạn sử dụng float, sau đó bạn sẽ nhận được 36.0.

+0

Tuyệt vời! Chỉ cần những gì tôi đang tìm kiếm. Cảm ơn: D – ThatPixelCherry

+5

Nếu x lớn hơn 1, bạn sẽ nhận được câu trả lời có nhiều hơn 2 chữ số. –

+1

'x% 1d * 100' nếu lớn hơn 1 – WalterM

3

Bạn có thể nhân x với 100 và sử dụng int thay vì nổi. Tôi đã thử đoạn code dưới đây:

double x = 0.36843871; 
int y = (int)(x*100); 
System.out.println(y); 

Và có đầu ra như:

36 
2

Trong trường hợp x là lớn hơn 1 và tiêu cực:

double x = -31.2232; 
    double xAbs = Math.abs(x); 
    String answer = ""; 
    if((int)xAbs == 0) { 
     answer = "00"; 
    } 
    else { 
     int xLog10 = (int)Math.log10(xAbs); 
     double point0 = xAbs/Math.pow(10, xLog10 + 1); // to 0.xx format 
     answer = "" + (int)(point0 * 100); 
    } 
    System.out.println(answer); 
+0

Trả về 36. Hai số đầu tiên là 23. – EJP

+0

Ok đã nhận và chỉnh sửa. cảm ơn @EJP. – snvrthn

+0

Và bây giờ, điểm nhân của số không bằng 100 là bao nhiêu? – EJP

2

Để xử lý các trường hợp tiêu cực và tất cả các dãy chính xác:

double y = Math.abs(x); 
while (y < 100) 
    y *= 10; 
while (y > 100) 
    y /= 10; 
return (float)(int)y; 

Bạn cũng cần phải h andle zero chính xác, không được hiển thị.

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