Java将float转换为整数

时间:2010-02-02 09:20:36

标签: java

我想做一个这样的操作:如果给定的浮点数类似于1.0,2.0,3.0,我想将它们保存到数据库中作为整数(1,2,3),如果它们像1.1,2.1, ,3.44,我将它们保存为浮动。使用java这个问题的最佳解决方案是什么?数据库中的相应字段是varchar的类型。

5 个答案:

答案 0 :(得分:19)

试试int i = (int) f;

编辑:我看到了问题的重点。此代码可能有效:

 int i = (int) f;
 String valToStore = (i == f) ? String.valueOf(i) : String.valueOf(f);

答案 1 :(得分:5)

String result = "0";
if (floatVar == Math.floor(floatVar)) {
    result = Integer.toString((int) floatVar);
} else {
    result = Float.toString(floatVar);
}

if子句检查数字是否为整数 - 即它是否等于将其舍入到最接近的整数值的结果。

但这确实是一个非常奇怪的要求,也许你应该重新考虑对这种事情的需要。

答案 2 :(得分:1)

似乎您希望将没有尾随数字的Floats保存为整数,同时将具有重要尾随数字的Floats保存为Floats。我宁愿把它全部保存为Float到DB,但这是你的问题,所以这是我的答案:

/**
   * Method to determine if trailing numbers are significant or not. Significant
   * here means larger than 0
   * 
   * @param fFloat
   * @return
   */
  public static boolean isTrailingSignificant(Float fFloat)
  {
    int iConvertedFloat = fFloat.intValue();// this drops trailing numbers
    // checks if difference is 0
    return ((fFloat - iConvertedFloat) > 0);
  }

这是您使用此方法的方法:

 Number oNumToSave = null;
if (isTrailingSignificant(fFloat))
{
  // save float value as is
  oNumToSave = fFloat;
}
else
{
  // save as int
  oNumToSave = fFloat.intValue();// drops trailing numbers      
}

之后,您可以使用变量oNumToSave执行数据库操作。

答案 3 :(得分:0)

不确定这是最佳解决方案,但您可以尝试编写如下方法:

String convertToString(Float f) {
  if (f.toString().endsWith(".0"))
      return f.intValue().toString();
  else
      return f.toString();
}

答案 4 :(得分:0)

科特林:

    val mAmount = 3.0
    val intAmount = mAmount.toInt()
    val amountToDisplay = if (intAmount.compareTo(mAmount) == 0) intAmount.toString() else java.lang.String.valueOf(mAmount)