Xin vui lòng bạn có thể giúp giải quyết vấn đề này:Đôi khi làm tròn số không phù hợp
round(30.5)
[1] 30
round(31.5)
[1] 32
Tôi muốn nhận luôn 0.5s hoặc lên hoặc xuống. Bất kỳ giải pháp nào
Xin vui lòng bạn có thể giúp giải quyết vấn đề này:Đôi khi làm tròn số không phù hợp
round(30.5)
[1] 30
round(31.5)
[1] 32
Tôi muốn nhận luôn 0.5s hoặc lên hoặc xuống. Bất kỳ giải pháp nào
Đây là một ví dụ khác là R-FAQ 7.31 (link to the FAQ on your device) ...... (link to the CRAN version). Nếu bạn luôn muốn số dấu phẩy động được hiển thị bởi print.default
là x.5 để "làm tròn" thì bạn cần thêm một chút "fuzz". Tôi đã chọn số lượng fuzz đó tương tự với độ chính xác mà print.default thường hiển thị số.
> round(30.5 +0.00000001)
[1] 31
Để thực hiện điều này trong một hàm:
> round.up <- function(x, digits=0) round(x+0.00000001, digits)
> round.up(30.5)
Bạn cũng có thể suy nghĩ này:
> 31.5==31.50000000000000001
[1] TRUE
> 31.5==31.5000000000000001
[1] TRUE
> 31.5==31.500000000000001
[1] TRUE
> 31.5==31.50000000000001
[1] FALSE
> 31.50000000000001
[1] 31.5
> 31.50000001
[1] 31.5
> 31.50001
[1] 31.50001
Một giải pháp mà không cần một bản in định dạng phụ thuộc offset:
Để luôn làm tròn, hãy sử dụng
ceiling(x - 0.5)
Để luôn làm tròn xuống, sử dụng
floor(x + 0.5)
'floor' hoặc 'ceiling'? – Khashaa
Tôi biết họ, không có gì phải xin lỗi. Chúng tôi không có ý tưởng về số, nhưng khi chúng tôi có 0,5 giây trong dữ liệu, tôi muốn luôn luôn là họ lên hoặc xuống – user1309
làm tròn đến thậm chí là một quy tắc toán học cơ bản – rawr