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