显示普通数而不是指数形式

发布于 2024-10-29 18:23:07 字数 127 浏览 3 评论 0原文

我想以普通形式而不是指数形式显示数字,

例如我的数字存储在值为 1234567890123 的双精度变量中,

我想获得准确的表示形式。但是当我将它传递给某个TextView进行显示时,它变成了1.234E12

I want to show number in a Normal form instead of Exponential Form

For Example My Number is stored in a double variable with value 1234567890123

I want to get the exact representation. but when I pass it to some TextView for display, it becomes 1.234E12

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤凫 2024-11-05 18:23:07

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

大十进制类具有一些内置舍入函数的优点,您可以使用该函数,例如:

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

Try Out with the Big decimal class in java..

Big decimal class has the advantage of some inbuilt Rounding function which you can use for example:

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)); 

Output :

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
与君绝 2024-11-05 18:23:07

你可以试试这个:

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

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

d.longValue();

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

您还可以查看NumberFormat

You can try this:

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

Now when you pass it to TextView, you can pass it as follows (assuming that you are interested only in the integer part of a double):

d.longValue();

Now, why is it giving you 1.234E12:
The rules of printing doubles can be found here (see the toString section). It describes exactly when the numbers will switch to scientific notation when printed.

You can also look into NumberFormat.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文