数值分析————从入门到跳楼(三)

约值处理的那些事儿

终于,我们成功的得到了一堆看起来奇形怪状、但程序的确认可的、float类型的数值了,接下来只要把数值打包出去就行了。。。才怪。

程序跑出来的float类型的值,大多数是长这样的:

4.656613E-10
0.0
2.220741E-31
4.656613E-10
2.874E-42
........

是的,各种千奇百怪的带着科学计数法中次方根(E表示以十为底数的指数,后面的E-10为10的-10次方,E-31就是10的-31次方)的数值,毕竟这玩意儿是雷达测出来的,然而我们人类实在不需要这么详细的数值(甚至不需要详细的指数规模),我们只需要前面的4.6,2.2这些数值就够了。

好的,开始进行约值处理。

约值的方法有很多,这里列出几种:

import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* java取小数点后两位小数
* @鬼月行
*
*/
public class functiom_1{

static double convert(double value){
long l1 = Math.round(value*100); //四舍五入
double ret = l1/100.0; //注意:使用 100.0 而不是 100
return ret;
}

public static void main(String[] args) {
/*
* 第一种方法 java.text.DecimalFormat
*/
DecimalFormat df = new DecimalFormat("#.##");
double d = 3.14159;
System.out.println(df.format(d));
/*
* 第二种方法 java.math.BigDecimal
*/
BigDecimal bd = new BigDecimal("3.14159265");
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
System.out.println(bd);
/*
* 第三种方法 convert
*/
double ret = convert(3.14159);
System.out.println(ret);
/*
* 第四种方法
*/
double db = 13.4324;
db=((int)(db*100))/100.0; //注意:使用100.0 而不是 100
System.out.println(db);
}

如果是单纯的数值取小数点后xx位的话,上面的四种方法基本够用了。但是,回到我们项目上来,我们的数值是这样的:

2.220741E-31

很尴尬的是,java里的数值默认小数是double,float形式的数值需要在数值后加上后缀符 f/F,有的时候会导致上面代码在float的数值类型下会报错,这种情况下,我们可以把它当作字符串来处理:

Float num = 4.656613E-10f;			
char value_0[] =  String.valueOf(num).toCharArray();//将float结果转换为字符数组
char value[] = {value_0[0],value_0[1],value_0[2]};//保留两位
String valueFinal = String.valueOf(value);//转成字符串,方便传输

约值成功,接下来就是愉快的打(搬)包(砖)环节了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值