2 oiu1010110 oiu1010110 于 2016.03.09 19:54 提问

Java字符串数字转化为double类型不用Integer.parseInt

当用了split()方法分离字符串的整数部分和小数部分后,两部分都存在了两个字符数组里,我怎么才能把每一个字符数组的每一位读出来进行转化呢

5个回答

caozhy
caozhy   Ds   Rxr 2016.03.10 02:46
 double d = 0.0;
String[] s = "123.456".split(".");
for (int i = 0; i < s[0].length; i++)
{
 d *= 10;
 d +=s.toCharArray()[i] - '0';
}
double d1 = 1.0;
for (int i = 0; i < s[0].length; i++)
{
 d1 /= 10.0;
 d +=d1 * (double)(s.toCharArray()[i] - '0');
}

手写的,只是思路,自己改下

caozhy
caozhy 回复oiu_半个夏天: if (s.subString(0,1).equals("-"))负数
接近 2 年之前 回复
oiu1010110
oiu1010110 s[0].substring(0,1)
接近 2 年之前 回复
oiu1010110
oiu1010110 非常感谢,还有一个问题是我怎么才能得到是正数还是负数呢,如果用s[0].substring[0,1]它不对啊
接近 2 年之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.10 07:59

你要转的是double类型,就用Double的parse啊。Java的八大基本类型都对应着首字母大写的包装类型的。

oiu1010110
oiu1010110 谢谢 你啦,我写错了,本意是不可以用parseDouble的
接近 2 年之前 回复
dcxy0
dcxy0   Ds   Rxr 2016.03.10 10:18

直接用Double.parseDouble不就好了?

u013772876
u013772876   2016.03.10 15:49

String[] strs = "123.456".split("\.");

for(String str : strs){
double dou = Double.valueOf(str);
}

这个可以运行! 上面回复的手写的代码是有问题的。

u013772876
u013772876 回复oiu_半个夏天: System.out.println(dou);
接近 2 年之前 回复
u013772876
u013772876 回复oiu_半个夏天: 不是double类型吗?
接近 2 年之前 回复
oiu1010110
oiu1010110 为什么运行后是这个结果呢 123.0456.0
接近 2 年之前 回复
u013772876
u013772876 String[] strs = "123.456".split("\\.");
接近 2 年之前 回复
qaws1ed
qaws1ed   2016.03.09 20:23

最简单的方法 doublle d = Double.parseDouble("123.45")

oiu1010110
oiu1010110 谢谢你啦,不过要求是不能用这个parseDouble呢
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!