java double 出现e_Android/JAVA-Double类型数据完整展示,去掉-E标识.显示指定位数,不足末尾补0。...

本文介绍了如何处理Java中的double类型数据,确保显示完整且美观。针对double类型的E表示法,提出使用substring结合BigDecimal转换来正确处理,并提供了一段包含格式化和补0操作的代码示例,适用于比特币行情显示等场景。
摘要由CSDN通过智能技术生成

最近做比特币相关的行情展示,涉及到这个大量的double类型数据的处理。为了显示整齐好看,同时针对位数什么的进行限制,以及精度控制。顺带说下,这个曲线图用的是PhilJay/MPAndroidChart ,蛮强大的。如果是简单的其实自己也可以开发的,小白打算后面就自己搞一个demo学习下。

误区:一开始小萌新以为是控制精度(小数点后几位),然后进度控制完后如果位数不足就末尾补0. 然后就发现如果是0.0000233这些,如果你进行了进度过滤,那么将会得到0,很尴尬。 哈哈。。。

实际上只需要:

1. substring截取从0开始的几位数(比如七位)

2. 然后进行位数不足, 末尾补0的操作

3.如果获取的double类型发现是0.232323233-E6这样色的,那么就不能直接做字符串截取,会得到0.23232 - 实际上是0.000000232....。 所以这种情况需要BigDecimal进行一个转换才行,然后再做截取

所以粘贴下下相关代码处理: formatNum方法小萌新做了改动。

import android.content.Context;

import java.math.BigDecimal;

import java.util.regex.Pattern;

/*

*@Description: 数字处理工具

*@Author: hl

*@Time: 2018/12/25 17:35

*/

public class NumberFormateTool {

/**

*

 
 

* 数字格式化显示

* 小于万默认显示 大于万以1.7万方式显示最大是9999.9万

* 大于亿以1.1亿方式显示最大没有限制都是亿单位

*

*

* @param num 格式化的数字

* @param kBool 是否格式化千,为true,并且num大于999就显示999+,小于等于999就正常显示

* @return

*/

public static String formatNum(Context context, String num, Boolean kBool) {

StringBuffer sb = new StringBuffer();

// if (!StringUtils.isNumeric(num))

// return "0";

if (kBool == null)

kBool = false;

BigDecimal b0 = new BigDecimal("1000");

BigDecimal b1 = new BigDecimal("10000");

BigDecimal b2 = new BigDecimal("100000000");

BigDecimal b3 = new BigDecimal(num);

String formatNumStr = "";

String nuit = "";

// 以千为单位处理

if (kBool) {

if (b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1) {

return "999+";

}

return num;

}

// 以万为单位处理

if (b3.compareTo(b1) == -1) {

sb.append(b3.toString());

} else if ((b3.compareTo(b1) == 0 && b3.compareTo(b1) == 1)

|| b3.compareTo(b2) == -1) {

formatNumStr = b3.divide(b1).toString();

nuit = "万";

} else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) {

formatNumStr = b3.divide(b2).toString();

nuit = "亿";

}

if (!"".equals(formatNumStr)) {

// int i = formatNumStr.indexOf(".");

// if (i == -1) {

// sb.append(formatNumStr).append(nuit);

// } else {

// i = i + 1;

// String v = formatNumStr.substring(i, i + 1);

// if (!v.equals("0")) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值