VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1055|回复: 5

字符串型怎么转换成浮点或双精度并计算啊?String To Double/Float

[复制链接]

2

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-26 23:00:01 | 显示全部楼层 |阅读模式
请问:

字符串型怎么转换成浮点或双精度并计算啊?
回复

使用道具 举报

0

主题

73

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-2-19 12:30:01 | 显示全部楼层
String s = "123.456";
double d = Double.parseDouble(s);
float f = Float.parseFloat(s);
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-12 03:00:01 | 显示全部楼层
Double.parseDouble(String str);
Float.parseFloat(String str);
回复

使用道具 举报

0

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-13 18:45:01 | 显示全部楼层
把转化代码最好放在try里面,免得再String值不是数值时报异常!
try
{
    double d = Double.parseDouble(s);
    float f = Float.parseFloat(s);
}
catch(Exception e)
{
   
}
回复

使用道具 举报

2

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-8-21 11:15:01 | 显示全部楼层
我是要JSP的方法,这些都方法JSP里都没有啊
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-9-5 22:30:01 | 显示全部楼层
找我私聊,我因为要做一个项目,因此下了一个全套的计算方法   加减乘除取余 都有  
下面是代码:

//针对js中浮点儿计算中加法、减法以及取余数失去精度问题  add by  chengang006 at 2011-10-01
/*
* 由于很多时候都会设计到浮点小数的算法,
* 在JS 中只用普通的parseFlost之类的进信封数据类型转换会使数据失去精度
* 因此采用先转整数再计算的方式
* */
//浮点数相加

function dcmAdd(arg1,arg2){
    var r1,r2,m;
    try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;}
    try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;}
    m=Math.pow(10,Math.max(r1,r2));
    return (accMul(arg1,m)+accMul(arg2,m))/m;
}

//浮点数相减   add by  chengang006  on 2011-10-01
/*
* 说明同上面的加法
* */
function dcmSub(arg1,arg2){
     return dcmAdd(arg1,-arg2);
}

//浮点数取余数 --add by  chengang006  on 2011-10-02
/*
* 跟据实际中的案例很容易丧失精度,通常做法是同时扩大10000倍,但考虑
* 跟前有关因此还是采用先转整数再计算
* */
function  dcmYu(arg1,arg2){
        var r1,r2,m;
    try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;}
    try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;}
    m=Math.pow(10,Math.max(r1,r2));
    return (accMul(arg1,m)%accMul(arg2,m))/m;
}
//针对JavaScript中的浮点计算精度问题, add by pengym at 2011-08-18

//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1,arg2){
    var t1=0,t2=0,r1,r2;
    try{t1=arg1.toString().split(".")[1].length}catch(e){}
    try{t2=arg2.toString().split(".")[1].length}catch(e){}
    with(Math){
        r1=Number(arg1.toString().replace(".",""))
        r2=Number(arg2.toString().replace(".",""))
        return (r1/r2)*pow(10,t2-t1);
    }
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function accMul(arg1,arg2){
    var m=0,s1=arg1.toString(),s2=arg2.toString();
    try{m+=s1.split(".")[1].length}catch(e){}
    try{m+=s2.split(".")[1].length}catch(e){}
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}


// 转化成小数, 原函数toDecimal(datavalue)存在的精度问题,因涉及过多屏蔽。
function toDecimal(datevalue){
        if(datevalue.indexOf('%') != -1){
                datevalue = datevalue.replace(/%/g,'');
              if(datevalue.indexOf(',') != -1) {
                      datevalue = datevalue.replace(/,/g,'');
              }             
              // 除100精度在原有基础上增加2位。
                var decimal = (datevalue.indexOf('.') == -1) ? 0 : (datevalue.length - datevalue.indexOf('.') - 1);               
              datevalue = accDiv(datevalue, 100).toFixed(decimal + 2);
//            alert("toDecimal: " + datevalue);
    } else {
                if(datevalue.indexOf(',') != -1){
                      datevalue = datevalue.replace(/,/g,'');
              }
    }
    return datevalue;
}

// 将小数转换为百分数。
function toPercentFormat(datevalue) {                                       
        var aa = accMul(datevalue, 100);
        return "" + aa + "%";                                         
}       
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表