Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 18
  1. #1
    Tham gia
    20-11-2008
    Bài viết
    137
    Like
    1
    Thanked 0 Times in 0 Posts

    [java] xử lí số lớn

    CÁc bác ơi cho em hỏi trong Java thì xử lí số rất lớn( cỡ 20 chữ số trở lên) thì làm sao ạ? Ví dụ như cộng trừ, nhân chia, lấy ngẫu nhiên các số ấy ạ.
    Mình mún lấy Random để tạo ra các số có 20 chữ số thì phải làm sao? Dùng kiểu gì? Bởi vì kiểu double không thể xử lí được.
    Các bác giúp em với nha!
    Quote Quote

  2. #2
    Tham gia
    28-07-2009
    Bài viết
    20
    Like
    0
    Thanked 0 Times in 0 Posts
    Cái này chắc bác phải dùng mảng rồi ?nhân chia cộng trừ thì cứ sử lý theo mảng là xong !(lâu ngày chưa động tới Java nhưng chắc thế )

  3. #3
    Tham gia
    20-11-2008
    Bài viết
    137
    Like
    1
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi hoang_java07 View Post
    Cái này chắc bác phải dùng mảng rồi ?nhân chia cộng trừ thì cứ sử lý theo mảng là xong !(lâu ngày chưa động tới Java nhưng chắc thế )
    Dùng mảng thì rất là phức tạp và khó xử lí nữa. Không biết còn cách nào không nhỉ?

  4. #4
    Tham gia
    28-07-2009
    Location
    California
    Bài viết
    53
    Like
    0
    Thanked 0 Times in 0 Posts
    Dùng class BigInteger với số nguyên, class BigDecimal với số thực.

  5. #5
    Tham gia
    28-07-2009
    Bài viết
    20
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi cal View Post
    Dùng class BigInteger với số nguyên, class BigDecimal với số thực.
    Ờ đúng rồi !java.math.BigInteger làm việc với số nguyên lớn hơn 64 bit ,bạn thử xem.Mà post luôn cái đề lên mọi người mới giúp được chứ !

  6. #6
    Tham gia
    20-11-2008
    Bài viết
    137
    Like
    1
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi cal View Post
    Dùng class BigInteger với số nguyên, class BigDecimal với số thực.
    He, em đang thử. Thanks bác nhìu, có gì em nhắn lại sau
    À, cho em hỏi muốn Random 1 số lớn cỡ 20 chữ số trở lên thì phải làm sao? Dùng hàm Random như thế nào ạ vì nó chỉ cho Random các số nhỏ hơn kiểu double thôi ạ.
    Được sửa bởi saimoto lúc 14:51 ngày 22-12-2009

  7. #7
    Tham gia
    02-09-2009
    Bài viết
    321
    Like
    0
    Thanked 2 Times in 2 Posts
    trời đơn giản thôi chứ có j đâu, cứ random từng thành phần. mình ko bít hàm ramdom trong java như thế nào nhưng mà giả sử nó cho ra số nguyên 32 bit, số mình cần tính 128 bit thì cứ dùng random 4 lần thôi, lần lượt cho 4 byte đầu, rồi tới 4 byte kế...

  8. #8
    Tham gia
    28-07-2009
    Location
    California
    Bài viết
    53
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi saimoto View Post
    He, em đang thử. Thanks bác nhìu, có gì em nhắn lại sau
    À, cho em hỏi muốn Random 1 số lớn cỡ 20 chữ số trở lên thì phải làm sao? Dùng hàm Random như thế nào ạ vì nó chỉ cho Random các số nhỏ hơn kiểu double thôi ạ.
    Hàm dựng sau đây có thể hữu ích đối với trường hợp của bro:
    BigInteger(int numBits, Random rnd)
    Constructs a randomly generated BigInteger, uniformly distributed over the range 0 to (2^numBits - 1), inclusive.
    Nó tạo 1 số ngẫu nhiên từ 0 đến 2 mũ numBits trừ 1
    Chọn numBits càng lớn thì miền trị của số ngẫu nhiên càng rộng.

    Thí dụ:
    Random random = new Random();
    BigInteger n = new BigInteger(67, random);

    ==> n là số ngẫu nhiên trong miền giá trị [0, 2 mũ 67 trừ 1]

  9. #9
    Tham gia
    20-11-2008
    Bài viết
    137
    Like
    1
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi cal View Post
    Hàm dựng sau đây có thể hữu ích đối với trường hợp của bro:

    Nó tạo 1 số ngẫu nhiên từ 0 đến 2 mũ numBits trừ 1
    Chọn numBits càng lớn thì miền trị của số ngẫu nhiên càng rộng.

    Thí dụ:
    Random random = new Random();
    BigInteger n = new BigInteger(67, random);

    ==> n là số ngẫu nhiên trong miền giá trị [0, 2 mũ 67 trừ 1]
    Cảm ơn bác nhìu nha. Tiện thể cho mình hỏi là so sánh 2 số lớn thì phải làm sao ạ. Vì không thể dùng các toán tử như: <,>,=,... được.

  10. #10
    Tham gia
    28-07-2009
    Location
    California
    Bài viết
    53
    Like
    0
    Thanked 0 Times in 0 Posts
    Không có chi.
    Method compareTo, equals dùng để so sánh 2 đối tượng BigInteger.
    Thí dụ:
    Code:
    		BigInteger n1 = new BigInteger("100");
    		BigInteger n2 = new BigInteger("100");
    		BigInteger n3 = new BigInteger("200");
    		System.out.println("n1 > n2 : " + (n1.compareTo(n2) > 0));
    		System.out.println("n1 == n2: " + (n1.compareTo(n2) == 0));
                    System.out.println("n1 == n2: " +  n1.equals(n2));
    		System.out.println("n1 < n3 : " + (n1.compareTo(n3) < 0));
    Nếu chưa có Javadocs dạng CHM (windows help), bro nên down về máy, nó giúp mình tra cứu nhanh hơn trang web của Sun.
    link: http://www.allimant.org/javadoc/index.php



Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •