public class MathTest { public void test11(String[] s){
BigDecimal[] d = new BigDecimal[s.length];
for(int i=0,ii=s.length;i<ii;i++){
d[i] = new BigDecimal(s[i]);//s[i]先转换成double类型也不行
}
for(int i=0,ii=d.length;i<ii;i++){
for(int j=i+1,len=s.length;i<len;i++){
if(d[i].compareTo(d[j])<0){
BigDecimal temp = d[i];
d[i] = d[j];
d[j] = temp;
}
}
}
for(int i=0,ii=d.length;i<ii;i++){
System.out.println(d[i]);
}
}
public static void main(String[] args) {
String[] s="23414","1.3453","431241.3451531","432143.3412","432143.3413","432143.3411"};
new MathTest().test11(s);
}
}
实数比较用BigDecimal怎么结果顺序还是不变?
要怎么样比较?
解决方案 »
- java数组的小问题
- swing皮肤如何切换?
- 推荐一本包含1.6特性的的Java Swing的书吧!
- 关于JTable取值问题???
- ***奇怪 Operation timed out: connect?? 是什么错误??***
- 急!如何用JAVA做TreeView实现动态加载节点
- 请问怎样将一个stringbuffer对象直接写入而不写入文件
- 高手们快来看!
- sjc0722(★刀剑笑★) ﹐lengnuan(冷暖自知)快來取分
- 本人需要 JB6,哪有下载。哪为大哥能提供给小弟!分没问题!
- JFrame里面,用FrameA里面的toggle按钮去开启和关闭FrameB,如何实现?比较急,在线等,谢谢!
- 怎么使用InputStreamReader
for(int j=i+1,len=s.length;i<len;i++)把这句中的 i 改成 j 就对了。
方法是对的
for(int j=i+1;j<s.length;j++)
其它循环中也没有必要单独再定义一个变量去保存数组的长度这是我改完之后的代码:import java.math.BigDecimal;public class MathTest { public void test11(String[] s){
BigDecimal[] d = new BigDecimal[s.length];
for(int i=0;i<s.length;i++){
d[i] = new BigDecimal(s[i]);
}
for(int i=0;i<d.length;i++){
for(int j=i+1;j<s.length;j++){
if(d[i].compareTo(d[j])<0){
BigDecimal temp = d[i];
d[i] = d[j];
d[j] = temp;
}
}
}
for(int i=0; i<d.length;i++){
System.out.println(d[i]);
}
} public static void main(String[] args) {
String[] s={"23414","1.3453","431241.3451531","432143.3412","432143.3413","432143.3411"};
new MathTest().test11(s);
}
}
以下是输出结果:432143.3413
432143.3412
432143.3411
431241.3451531
23414
1.3453
import java.util.*;public class MathTest { public static void main(String[] args) {
String[] s={"23414","1.3453","431241.3451531","432143.3412","432143.3413","432143.3411"};
Arrays.sort(s, new Comparator(){
public int compare(Object o1, Object o2){
return new BigDecimal(o1.toString()).compareTo(new BigDecimal(o2.toString()));
}
});
for(int i=0; i<s.length;i++){
System.out.println(s[i]);
}
}
}
靠,竟然发现这几个类已经实现了Comparabe接口,我们的排序白干了哈哈
直接用这个
Arrays.sort(d);
搞定~~~~