01/10/2018, 11:01

Xin giúp đỡ cách tách phần nguyên trong số thực

Hi mọi người,
Mình đang học về java, mình đang gặp vấn đề như sau:

  • Mình cho người dùng nhập vào số thực mà họ muốn và in ra phần nguyên của số thực ấy, ví dụ: Người dùng nhập vào 9110053.55554 thì mình phải lấy được 9110053
    Xin mọi người giúp đỡ
    Thanks all
Henry viết 13:02 ngày 01/10/2018

Lấy phần nguyên, thì chỉ cần chuyển đổi số đó qua số nguyên thôi.

Le Hoang Quan viết 13:08 ngày 01/10/2018

Thanks Trung. Mình cũng đã từng nghĩ như thế, nhưng nếu người dùng nhập số lớn hơn kiểu Int thì sẽ bị lỗi, đó là lý do mình đưa ra ví dụ là một số thực dài

HK boy viết 13:13 ngày 01/10/2018

Chuyển thành string, rồi split thành 2 phần tử qua dấu phẩy thập phân. Java chắc làm được ấy nhỉ :v

Le Hoang Quan viết 13:02 ngày 01/10/2018

Thanks bạn, nhưng có thể nói rõ hơn tí dc không, mình chưa hiểu lắm. Mà mình muốn lấy hết số chứ đâu phải chỉ lấy 2 số đâu

HK boy viết 13:14 ngày 01/10/2018

Dài mấy cũng chỉ lưu được 15 chữ số thập phân là tối đa chứ nhỉ?

f = 942039230480293449048.349823094238 # 1 số siêu dài
s = str(f) # chuyển số thành xâu

p_int, p_frac = s.split('.') # tách xâu s làm 2 phần,
# xâu '.' là kí tự phân cách giữa 2 phần
# p_int là phần nguyên và p_frac là phần thập phân

p/s: mình viết theo Python, bạn có thể tìm hàm split trên google. Hình như Java cũng có hàm split string :v

Le Hoang Quan viết 13:07 ngày 01/10/2018

Mình đã hiểu rồi. Để mình test bên java Thanks HK boy.

String string = “9110053.55554”;
String[] parts = string.split("\.");
String part1 = parts[0]; // 9110053
String part2 = parts[1]; // 55554

Đỗ Nhiên viết 13:10 ngày 01/10/2018

chào bạn mình vừa làm vấn đề này xong đó chính là bạn dùng DecimalFormat trong java bạn à đây là code mẫu của mình hy vọng sẽ giúp ích được cho bạn

double toan=5;
		double ly=6;
		double hoa=9;
		double dtb=(toan+ly+hoa)/3;
		System.out.println(dtb);
		DecimalFormat dcf=new DecimalFormat("#.##");
		System.out.println(dcf.format(dtb));

Cái DecimalFormat dcf=new DecimalFormat("#.##"); cái #.## dùng để bạn sẽ quyết định lấy bao nhiêu số sau dấu phẩy

Le Hoang Quan viết 13:16 ngày 01/10/2018

Thanks Do_Nhien, đó cũng là một cách hay . Nhưng nó chưa phù hợp với bài toán của mình (do bài toán của mình là lấy toàn bộ input của người dùng, không được làm tròn )

Đỗ Nhiên viết 13:18 ngày 01/10/2018

về bản chất thì hai cái nó cũng như nhau vì nó đều biến thành chuỗi hết

Le Hoang Quan viết 13:07 ngày 01/10/2018

Không nhé Do_Nhien, hàm đó có làm tròn số đó. Mình test thì từ 6.666666666… nó chuyển thành 6.67, chỉ là lấy fomat bao nhiêu sau dấu phẩy. Hàm không chuyển sang kiểu String

Bài liên quan
0