我想要进行这样一个操作:如果给定的浮点数像1.0,2.0,3.0这样,我想将它们保存为整数(1、2、3),如果它们像1.1,2.1,3.44这样,就将它们保存为浮点数。使用Java,如何解决这个问题?数据库中相应的字段类型为varchar。
只需尝试int i = (int) f;
。
编辑:我理解问题所在。这段代码可能会起作用:
int i = (int) f;
String valToStore = (i == f) ? String.valueOf(i) : String.valueOf(f);
String result = "0";
if (floatVar == Math.floor(floatVar)) {
result = Integer.toString((int) floatVar);
} else {
result = Float.toString(floatVar);
}
if语句检查数字是否为整数 - 即它是否等于四舍五入到最接近的整数值。
但这确实是一个非常奇怪的要求,也许您应该重新考虑是否需要这样做。
L + ""
转换为 Float.toString(L)
。 - Bozho/**
* 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执行数据库操作。
不太确定这是否是最佳解决方案,但您可以尝试编写类似于以下方法:
String convertToString(Float f) {
if (f.toString().endsWith(".0"))
return f.intValue().toString();
else
return f.toString();
}
Kotlin:
val mAmount = 3.0
val intAmount = mAmount.toInt()
val amountToDisplay = if (intAmount.compareTo(mAmount) == 0) intAmount.toString() else java.lang.String.valueOf(mAmount)