Java 从我的应用程序中的数据库获取浮动格式的数字
我在我的应用程序中使用EditText作为表单,并要求用户输入一个数字,然后在从EditText获取数字(双倍)并将其存储在数据库中之后,直到这里,一切都正常工作,但当我想在我的应用程序中显示数字时,它会以浮动格式显示,例如,如果用户在我的应用程序中输入32453905,我会得到32453905.0,我真的不需要如何修复它 将文本转换为双精度文本的代码Java 从我的应用程序中的数据库获取浮动格式的数字,java,database,android-studio,Java,Database,Android Studio,我在我的应用程序中使用EditText作为表单,并要求用户输入一个数字,然后在从EditText获取数字(双倍)并将其存储在数据库中之后,直到这里,一切都正常工作,但当我想在我的应用程序中显示数字时,它会以浮动格式显示,例如,如果用户在我的应用程序中输入32453905,我会得到32453905.0,我真的不需要如何修复它 将文本转换为双精度文本的代码 private double textToDouble(String number) { if (number != null &
private double textToDouble(String number)
{
if (number != null && number.length() > 0)
return Double.parseDouble(number);
else
return 0;
}
从数据库中获取数字的代码
String stringNumber = Double.toString(user.getNumber());
editTextNationalNumber.setText(stringNumber);
@zolfa必须尝试user.getNumber().toString()或String.valueOf(user.getNumber()) 如果不需要将数字作为文本输入,您可以使用java的Scanner功能
Import java.util.Scanner;
并获得输入使用
double number = in.nextDouble();
该值将以双精度形式存储在数字中
double将始终返回十进制数。所以试着使用类型转换,比如
(int) variabeleAsDouble
然后,您的程序将接受小数,但将其舍入为整数。由于您允许用户输入双值数字,因此需要检查数字是否在小数点后有任何数字,以便:
double d = user.getNumber();
String text = "";
if (d % 1 == 0) {
text = Integer.toString((int)d);
} else {
text = Double.toString(d);
}
editTextNationalNumber.setText(text);
您可以执行以下操作:
//number without decimals
int number = (int) user.getNumber();
String stringNumber = Integer.toString(number);
如果用户还可以输入十进制值,则可以这样处理这两个值:
//number without decimals
double doubleNumber = user.getNumber();
int intNumber = (int) doubleNumber;
String stringNumber;
if(intNumber == doubleNumber)
stringNumber = Integer.toString(intNumber);
else
stringNumber = Double.toString(doubleNumber);
这将确保在用户输入十进制值时显示正确的十进制值
double/double
-浮点,始终是一个近似值,BigDecimal/DECIMAL
-定点new BigDecimal(“123”)
将给出一个“刻度”,0个小数。@JoopEggen BigInteger似乎是一个不错的选择,我使用了它,但仍然没有得到我想要的格式的数字。例如,当我输入2147483647时,我得到了2.147483647E9任何帮助?使用BigDecimal.toPlainString()
。它的toString()
也将使用带E的科学符号。如果数字超出int的范围,typecasting会给我值0只需使用BigInteger.toString而不是Integer