Đề cập đến các tài liệu của BigDecimal
lớp,Cho dù sử dụng String hoặc Integer trong BigDecimal trong Ruby
n,m = a.precs
prec
lợi nhuận số chữ số có nghĩa (n
) và số lượng tối đa của chữ số có nghĩa (m
) củaa
.
Tôi đang bối rối bởi kết quả sau có liên quan đến BigDecimal
.
require 'bigdecimal'
BigDecimal.new('1').precs # => [9, 18]
BigDecimal.new(1).precs # => [9, 27]
Tôi không thể hiểu tại sao khi một String
được thông qua, số lượng tối đa của chữ số có nghĩa là ít hơn so với khi một Fixnum
được thông qua.
Ngoài ra nó sẽ dẫn đến bất kỳ vấn đề chính xác nào không?
Trình tạo lập tham số thứ hai nếu bạn muốn nhất quán: 'BigDecimal.new ('1', 27) .precs' chẳng hạn. Và tài liệu này nói rằng "số chữ số có nghĩa được xác định từ giá trị ban đầu" nếu bạn không tự xác định. –
@muistooshort quyền của bạn mà chúng tôi có thể chỉ định điều đó. Nhưng câu hỏi của tôi là tại sao 'precs' lại khác ở nơi đầu tiên? – abhinavmsra
Dưới đây là các điểm dữ liệu khác. Các quan sát sau đây chỉ các chuỗi chứa ký tự '1' chỉ (ví dụ:' "111111" ') và các số có chữ số là tất cả' 1' (ví dụ: '111111'). Đối với ít hơn '10' ký tự,' [9,18] 'được trả về. Đối với ít hơn '10' chữ số,' [9,27] 'được trả về. Giữa '10' và' 18' ký tự * hoặc * chữ số, '[18,27]' được trả về (tức là, cùng một bộ được trả về cho cả chuỗi và số), giữa '19' và một số ký tự hoặc số lớn hơn , '[27,36]' được trả về. Ngoài ra: Tôi đề nghị bạn thêm 'require 'bigdecimal'' vào mã của bạn. –