Java 从我的应用程序中的数据库获取浮动格式的数字

Java 从我的应用程序中的数据库获取浮动格式的数字,java,database,android-studio,Java,Database,Android Studio,我在我的应用程序中使用EditText作为表单,并要求用户输入一个数字,然后在从EditText获取数字(双倍)并将其存储在数据库中之后,直到这里,一切都正常工作,但当我想在我的应用程序中显示数字时,它会以浮动格式显示,例如,如果用户在我的应用程序中输入32453905,我会得到32453905.0,我真的不需要如何修复它 将文本转换为双精度文本的代码 private double textToDouble(String number) { if (number != null &

我在我的应用程序中使用EditText作为表单,并要求用户输入一个数字,然后在从EditText获取数字(双倍)并将其存储在数据库中之后,直到这里,一切都正常工作,但当我想在我的应用程序中显示数字时,它会以浮动格式显示,例如,如果用户在我的应用程序中输入32453905,我会得到32453905.0,我真的不需要如何修复它

将文本转换为双精度文本的代码

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