2012-05-08 32 views
8

Tôi chỉ muốn xóa phần phân số của số phao có chứa .0. Tất cả số khác là chấp nhận được .. Ví dụ:Cách xóa phần thập phân khỏi số phao chứa .0 trong java

I/P: 1.0, 2.2, 88.0, 3.56666, 4.1, 45.00 , 99.560 
    O/P: 1 , 2.2, 88, 3.567, 4.1, 45 , 99.560 

Có phương pháp nào có sẵn để làm điều đó khác hơn "so sánh số với" 0,0" và tham gia chuỗi "?

EDIT: Tôi không muốn NUMBER diễn xuất FLOAT (như 1.0, 2.0 là gì, nhưng 1 2 phải không?)

tôi cảm thấy câu hỏi của tôi là chút bối rối ...
Dưới đây là giải thích của tôi: Tôi chỉ muốn hiển thị một loạt các số dấu chấm động cho người dùng. Nếu phần phân số của một số bằng 0, thì chỉ hiển thị phần nguyên, nếu không thì hiển thị số như nó. Tôi hy vọng đó là rõ ràng bây giờ ..

+0

"So sánh số với '' 0,0 '' và dùng substring" sẽ không chuyển đổi "45.00" đến "45". Bạn có muốn tách số zeroes tùy ý khỏi kết thúc không? –

+0

Hãy xem xét điều này: http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-types-to-string –

+0

Bạn có phải giữ dấu 0 ở '99 .560 'hay không' 99,56 'có được không? – NickT

Trả lời

8

Bạn có thể sử dụng một biểu thức chính quy như thế này: \\.0+$. Nếu chỉ có 0 sau dấu thập phân thì cụm từ thông dụng này sẽ sinh ra đúng.

Một điều bạn có thể làm là một cái gì đó giống như vậy:

float x = 12.5; 
float result = x - (int)x; 
if (result != 0) 
{ 
    //If the value of `result` is not equal to zero, then, you have a decimal portion which is not equal to 0. 
} 
+0

tôi sẽ xem xét điều này – vnshetty

+0

cảm ơn vì điều đó, nhanh chóng và hiệu quả ^^ Trong Android tôi đã làm Float vẫn còn = floatval - FloatMath.floor (floatval); – Darkendorf

0

Vâng, về mặt kỹ thuật phần hiển thị là văn bản, vì vậy bạn có thể làm điều đó với biểu thức chính quy. Nếu con số trùng khớp thì sử dụng các nhóm để trích xuất phần chính xác. (Tôi sẽ cập nhật các bài với một giải pháp sau.)

Ngoài ra, bạn chỉ đơn giản là có thể đi:

if ((int)Math.round(number) == number) { 
    System.out.println((int) number) 
} else { 
    System.out.println(number) 
} 

hoặc thậm chí:

System.out.println((int) Math.round(number) == number ? 
    String.valueOf((int) number) : String.valueOf(number)); 

cẩn thận, String.valueOf() là cần thiết, vì điều này không hoạt động. System.out.println (kép) sẽ luôn luôn được thực hiện, ví dụ dưới đây không làm việc:

System.out.println((int)Math.round(number) == number ? (int) number : number); 
+0

-1 câu lệnh in cuối cùng của bạn (với toán tử đại học) không hoạt động vì 'println (double)' sẽ luôn được gọi. – dogbane

+0

Tôi không hiểu ... làm thế nào để bạn có được điều đó? –

+0

Đồng ý, bạn nói đúng ... Tôi không chắc chắn tại sao. –

9

Hãy thử:

String.format("%.0f",value); 
3

Nếu android mang đến cho bạn chanh. Đừng ném nó.

YourFormatedStringNumber = NumberFormat.getInstance().format(myNumber); 

makes -> "12.50" to "12.50" and "12.00" to "12" 

More here in doc.

+1

Đây chính là điều tôi muốn làm! Fantastic –

0

thử đúc int trước số float

+0

Vui lòng xem mục này trước khi trả lời. [link] (https://stackoverflow.com/help/how-to-answer) –

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