繁体   English   中英

将double舍入到int总是较小

[英]Rounding double to int always to the smaller

我想将double值转换为java中的int值。 我遇到的问题是,简单的强制转换无法按我的意愿进行,而Math.round()也不起作用。

我的目标是将双精度数四舍五入到下一个较小的整数。 如下:

 0.5 ->  0
 1.7 ->  1
 2.9 ->  2
-0.3 -> -1
-3.9 -> -4

问题主要是小于0的不同处理方法。因为我不希望它们舍入到较高的值,而是舍入到较低的值。

是否有Java原生功能,或者如何有效实现呢? 我想到了以下内容,但我宁愿使用java本机函数。

double d = -0.1D; // or whatever else
int i = (double) ((int) d) <= d ? (int) d : (int) d - 1;

采用

double d = ...
int n = (int)Math.floor(d);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM