Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定一个类<;?扩展数量>;比其他类别更宽<;?扩展数量>;_Java_Casting_Numbers_Type Conversion - Fatal编程技术网

Java 确定一个类<;?扩展数量>;比其他类别更宽<;?扩展数量>;

Java 确定一个类<;?扩展数量>;比其他类别更宽<;?扩展数量>;,java,casting,numbers,type-conversion,Java,Casting,Numbers,Type Conversion,是否有一个Java方法可以确定一个ClassI的实例是否不精简,这样一个方法是否可以存在于公共库中。它如何知道一个自定义的MyNumber-extends-Number是否可以无损地转换为long(例如),嗯,这可能很难。根据您的需要,您可以尝试近似计算,例如,首先确定数字是整数还是小数。对于整数,您可以比较可表示的范围;对于十进制数,您必须考虑精度,但即使这样,您也可能无法将每个浮点转换为不带损失的双精度(同样取决于您如何定义“无损”,请参见此处示例:)我不认为这样的方法可以存在于公共库中。它

是否有一个Java方法可以确定一个
ClassI的实例是否不精简,这样一个方法是否可以存在于公共库中。它如何知道一个自定义的
MyNumber-extends-Number
是否可以无损地转换为long(例如),嗯,这可能很难。根据您的需要,您可以尝试近似计算,例如,首先确定数字是整数还是小数。对于整数,您可以比较可表示的范围;对于十进制数,您必须考虑精度,但即使这样,您也可能无法将每个浮点转换为不带损失的双精度(同样取决于您如何定义“无损”,请参见此处示例:)我不认为这样的方法可以存在于公共库中。它如何知道一个自定义的
MyNumber-extends-Number
是否可以无损地转换为long(例如),嗯,这可能很难。根据您的需要,您可以尝试近似计算,例如,首先确定数字是整数还是小数。对于整数,您可以比较可表示的范围;对于十进制数,您必须考虑精度,但即使这样,您也可能无法将每个浮点转换为不带损失的双精度(同样取决于您如何定义“无损”,请参见此处示例:)
public static boolean canLosslessyConvert(Class<? extends Number> from, Class<? extends Number> to)
canLosslessyConvert(Integer.class, Long.class)    == true
canLosslessyConvert(Long.class, Integer.class)    == false
canLosslessyConvert(Long.class, BigInteger.class) == true