有什么方法可以对自定义规则进行舍入吗?

时间:2019-01-31 13:08:31

标签: r datetime rounding

我想知道是否有任何方法可以根据自己的规则向上或向下取整,而不仅仅是基本的0.5向上或向下。 我要四舍五入的数字采用24小时制,即2250、1100、830(但采用数字格式),我想根据最后两个数字是大于还是小于30来四舍五入-这将舍入到下一个小时。 任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

与此类似吗?

# Function
hround <- function(x) {
  if (any(x < 0 | x > 24000)) stop("Invalid format")
  mins <- x %% 100
  x <- x - mins + ifelse(mins >= 30, 100, 0)
  ifelse(x == 2400, 0, x)
}
# test data:
test <- c(2250, 1100, 830, 725)

# Test run
hround(test)
# [1] 2300 1100  900  700

答案 1 :(得分:1)

您可以在四舍五入之前对数字进行补偿:

    @Multipart
    @Headers("Content-Type: multipart/mixed; boundary=MULTI_PART_BOUNDARY")
    @POST("upload")
    @Xml
    fun upload(@Part("xml") application: RequestBody,
       @Part filePart: MultipartBody.Part) : Single<ResponseBody>


    val cv = MultipartBody.Part.createFormData(
                    "file",
                    "filename,
                     RequestBody.create(
                    MediaType.parse("application/msword"),
                    file))

    val xml = RequestBody.create(
                    MediaType.parse("text/plain"),
                    "<?xml version="1.0...")

您可能要向其中添加round(c(2250, 1100, 830) + 20, -2) # [1] 2300 1100 800

%% 2400

那应该是:

round(2350 + 20, -2)
# [1] 2400
round(2350 + 20, -2) %% 2400
# [1] 0

感谢@snoram的提示