我有一个最大长度的编辑文本
我的问题是...
如何显示比 maxlenght 更大的数字的值,例如 windows calc?
例子:
1.34223423423434e+32
我想要这个和edittext maxlength
编辑:如果可能的话,我希望它用于显示和存储数字而不会出现数学运算问题
谢谢
我有一个最大长度的编辑文本
我的问题是...
如何显示比 maxlenght 更大的数字的值,例如 windows calc?
例子:
1.34223423423434e+32
我想要这个和edittext maxlength
编辑:如果可能的话,我希望它用于显示和存储数字而不会出现数学运算问题
谢谢
这就是BigInteger类(或BigDecimal,对于非整数)的用途。
这些类以任意精度存储数字,并允许标准算术运算。您可以将数字的确切值作为字符串获取,然后根据需要对其进行格式化(例如修剪长度)。
(请注意,虽然您似乎可以将这些类与NumberFormat实例一起使用,但不建议这样做,因为如果数字不适合double
.)
这是一个使用它的例子:
// Create a BigDecimal from the input text
final String numStr = editText.getValue(); // or whatever your input is
final BigDecimal inputNum = new BigDecimal(numStr);
// Alternatievly you could pass a double into the BigDecimal constructor,
// though this might already lose precison - e.g. "1.1" cannot be represented
// exactly as a double. So the String constructor is definitely preferred,
// especially if you're using Double.parseDouble somewhere "nearby" as then
// it's a drop-in replacement.
// Do arithmetic with it if needed:
final BigDecimal result = inputNum.multiply(new BigDecimal(2));
// Print it out in standard scientific format
System.out.println(String.format("%e", result));
// Print it out in the format you gave, i.e. scientific with 14dp
System.out.println(String.format("%.14e", result));
// Or do some custom formatting based on the exact string value of the number
final String resultStr = result.toString();
System.out.println("It starts with " + result.subString(0, 3) + "...");
我不确定您想要输出的确切格式,但无论是什么格式,您都应该能够使用 BigDecimals 作为后备存储来管理它。