当前位置: 首页 > 知识库问答 >
问题:

Java可能返回浮点数或整数?

韩景胜
2023-03-14

有可能有一个返回整数或浮点的函数吗?如果可能的话,我想把这两个函数合二为一:

private static Integer parseStringFormatInt(String val){
    System.out.println(Integer.parseInt(val.substring(0, val.indexOf("."))));
    return Integer.parseInt(val.substring(0, val.indexOf(".")));
}
private static Float parseStringFormatFloat(String val){
    System.out.println(Float.parseFloat(val.substring(0, val.indexOf("."))));
    return Float.parseFloat(val.substring(0, val.indexOf(".")));
}

共有3个答案

端木桐
2023-03-14

您可以返回Number

private static Number parseStringFormatNumber(String val){
    try {
        return Integer.valueOf(val.substring(0, val.indexOf(".")));
    } catch (NumberFormatException e) {
        try {
            return Float.valueOf(val.substring(0, val.indexOf(".")));
        } catch (NumberFormatException e2) {
            // handle invalid value (throw exception, return 0?)
        }
    }
}
濮阳功
2023-03-14

您可以使用Number作为返回类型,也可以将该方法设置为泛型

static <T extends Number> T parseString(String str, Class<T> cls) {
    if (cls == Float.class) {
        return (T) Float.valueOf(str);
    } else if (cls == Integer.class) {
        return (T) Integer.valueOf(str);
    }
    throw new IllegalArgumentException();
}
穆高澹
2023-03-14

将返回类型设置为Number,因为FloatInteger都是Number的子类型,如下所示

private static Number parseStringFormatNumber(String val){
    //Based on your conditions return either Float or Integer values
}

您还可以使用instanceof操作符对返回值进行测试,以获得返回值的确切类型。i、 eFloatInteger

if(returnedValue instanceof Float)
{
// type cast the returned Float value and make use of it
}
else if(returnedValue instanceof Integer)
{
// type cast the returned Integer value and make use of it
}
 类似资料:
  • 问题内容: 如果结果为小数,如何打印浮点数;如果结果没有小数,如何打印整数? 示例结果 问题答案: 您可以尝试使用简单的Python字符串格式化方法: 如果满足以下条件,将为您提供以下输出: 或此输出,如果:

  • 问题内容: 因此,如果我有一个范围为‘0-1024’的数字,并且希望将其取为‘0-255’,那么数学将决定将输入除以输入的最大值(在这种情况下为1024),从而得出我的数字介于0.0-1.0之间。然后将其乘以目标范围(255)。 我要做什么! 但是由于Java中的某些原因(使用处理),它将始终返回值0。 该代码将像这样简单 但是我只得到0.0。我已经尝试过两次和诠释。一切都无济于事。为什么!? 问

  • 我想编写一个函数模板,它返回各种类型的随机变量(bool、char、short、int、float、double,以及这些变量的无符号版本)。 我看不出如何使用最新的C 11标准库来实现这一点,因为我需要使用统一的int分布或统一的real分布。我想我可以专门化模板: 在Visual Studio 2012 Update 3下,这给出了: 错误C2668:“‘匿名命名空间’::randomPrim

  • 我为我的某个项目写了一段代码,其中我添加了几个数字。在这个过程中,我从数组中添加整数和浮点数。直到数组的最后一个元素,总和有适当的小数位数。但是在最后一个元素,总和突然给了我很多小数位。与前一个总和相加的数字和总和本身的小数位数少于3位,但最终总和的小数位数超过3位。这是代码。它在JS。 这是结果 如你所见235.41和100的总和335.4099999...我知道我可以用固定函数来完成它。然而,

  • 我的问题是,是否有一种方法可以在不通过堆栈的情况下完成所有这些操作。x86_64是否有将xmm0的内容复制到eax或其他通用寄存器的内插? 编辑:问题本身在讨论过程中发生了变化。最后有两个备注,在这两个备注中,我都引用了Intel C++复杂参考的相应部分。 > 可以使用intrinsics在通用Regiter和XMM寄存器之间移动数据(“Steaming SIMD Extensions->流式S

  • 问题内容: 如何在不使用舍入的情况下将Java中的 float 原语减少到 两位小数 ? 仅舍入小数点后两位不应该四舍五入。 第二点是如何 验证 或计算点后的小数位数?: 更新 数字是字符串输入,因此我认为我会按照建议进行操作;并且我将只有int try / catch块用于任何异常。欢迎提供任何建议以更智能的方式进行这项工作: 问题答案: 首先,不能保证仅因为浮点数可以精确表示,所以可以保证它可