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