Java 当参数为整数时,双精度值将被忽略

Java 当参数为整数时,双精度值将被忽略,java,truncate,Java,Truncate,如果我有{“myparam”:12.8},并且我的请求类有 整数myparam myparam设置为12而不是13。 为什么它是一个下限而不是取整?这是从Double请求int值的预期行为(如Double API中所示): 解释它的最简单方法是:当从一个double中得到一个int时,包括“.”在内的所有正确项都被切掉。当您提供一个double而不是整数时,为什么要将其舍入?可能值得注意的是,所有JavaScript数字类型(看起来像JSON)都是64位浮点数。这是因为当转换为“不太精确”的类型

如果我有{“myparam”:12.8},并且我的请求类有
整数myparam
myparam设置为12而不是13。

为什么它是一个下限而不是取整?

这是从Double请求int值的预期行为(如Double API中所示):


解释它的最简单方法是:当从一个double中得到一个int时,包括“.”在内的所有正确项都被切掉。

当您提供一个
double而不是
整数时,为什么要将其舍入?可能值得注意的是,所有JavaScript数字类型(看起来像JSON)都是64位浮点数。这是因为当转换为“不太精确”的类型(例如double->integer)时,数字通常会被截断而不是四舍五入。Nybbit,你怎么知道double->integer包含一个截断呢?@stumbled因为JSON解析器在内部使用了
Number
的子类,这涉及到截断。请参阅:@stumped这就是绝大多数编程语言如何处理从浮点到整数的转换。它有点密集,但是“Java编程语言在将浮点值转换为整数时使用向零取整,在本例中,这就像数字被截断一样,丢弃尾数位。”
public abstract int intValue()
Returns the value of the specified number as an int. This may involve
rounding or truncation.
Returns:
the numeric value represented by this object after conversion to type int.