显示正常数字而不是指数形式

时间:2011-04-04 07:29:08

标签: android double normalization bigdecimal primitive-types

我希望以正常形式而不是指数形式显示数字

例如我的号码存储在值为1234567890123

的双变量中

我想得到确切的表示。但当我将它传递给某些TextView进行显示时,它变为1.234E12

2 个答案:

答案 0 :(得分:3)

尝试使用java ..中的Big十进制类。

大十进制类具有一些内置Rounding函数的优点,例如:

Double a = 7.77d * 100000000; //Multiply Operation

System.out.println("Large multiply " + a.doubleValue());

System.out.println("Magic of big decimal " + BigDecimal.valueOf(a).setScale(0,RoundingMode.HALF_EVEN).toPlainString());

a = 7.77d / 100000; //Devide Operation

System.out.println("Devide operation " + a.doubleValue());

System.out.println("Magic of big decimal " + BigDecimal.valueOf(a).toPlainString());

DecimalFormat formatter = new DecimalFormat("0.000000");

System.out.println("Trimming the big string : "+formatter .format(a)); 

输出:

Large multiply 7.77E8

Magic of big decimal 777000000

Devide operation 7.769999999999999E-5

Magic of big decimal 0.00007769999999999999

Trimming the big string : 0.000078

答案 1 :(得分:1)

你可以试试这个:

double v = 1234567890123d;
Double d = new Double( v );

现在,当您将其传递给TextView时,您可以按如下方式传递它(假设您只对double的整数部分感兴趣):

d.longValue();

现在,为什么它会给你1.234E12: 可以找到打印双打的规则here(请参阅toString部分)。它准确描述了打印时数字何时会切换为科学记数法。

您还可以查看NumberFormat