java小程序算法的实现 请问double x=10000.01,按比列3:3:0:4存放在double数组中,得出的值为3000.0,3000.0,0,4000.01这个算法该怎么实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for exampledouble x = 10000.01;String[] s = "3:3:0:4".split(":");double[] r = new double[s.length];double sum = 0;for (int i=0; i<s.length; i++) { r[i] = Double.valueOf(s[i]); sum += r[i];}double[] d = new double[s.length];double y = x;for (int i=0; i<r.length-1; i++) { if (r[i] != 0) { d[i] = (int)(x * r[i] / sum); //看LZ的意思好像小数部分没按比例,所以转为int } else { d[i] = 0; } y -= d[i];}d[r.length-1] = y; //最后一个包含所有的小数部分System.out.println(Arrays.toString(d)); 做一个简单的java编译器,怎么做项目管理打开工程,文件 【正则表达式求助】: 寻找所有匹配 有关线程方面的问题 通过filter判断用户权限的问题 一道面试题,做错了 HashMap和Vector的查找速度谁快? 问JButton如何加载图片 求助java网络编程高手 怎样在JTree里头加JCheckBox????在线等待。有例子的加100分 为什么不能显示中文?帮忙 java split 问题高分求解 请教一个关于a--的小问题
double x = 10000.01;
String[] s = "3:3:0:4".split(":");
double[] r = new double[s.length];
double sum = 0;
for (int i=0; i<s.length; i++) {
r[i] = Double.valueOf(s[i]);
sum += r[i];
}
double[] d = new double[s.length];
double y = x;
for (int i=0; i<r.length-1; i++) {
if (r[i] != 0) {
d[i] = (int)(x * r[i] / sum); //看LZ的意思好像小数部分没按比例,所以转为int
} else {
d[i] = 0;
}
y -= d[i];
}
d[r.length-1] = y; //最后一个包含所有的小数部分
System.out.println(Arrays.toString(d));