我拥有的两个值是:
firstval=200.000
Secondval=399.999,
我必须生成一个数字,这样当第一个小数部分增加到999
为整数部分时,接下来应该增加整数部分,然后小数部分重置为000
并开始递增新号码。这发生在399
之前。
喜欢
200.001,200.002 ..... 200.999,201.000,201.002 .... 399.998,399.999"
答案 0 :(得分:3)
有一种很好的方法可以使用Java 8 Stream API获取所需的数组
(1)使用双增量
double[] sequence = DoubleStream.iterate(200.0, d -> d + 0.001).limit((int) (1 + (399.999 - 200.0) / 0.001)).toArray();
注意,总结很多双打可能会产生一些错误,例如在我的笔记本电脑上,序列中的最后一个数字是399.99899999686227
(2)更好的方法是生成整数流并将其映射到双精度:
double[] sequence = IntStream.range(200000, 400000).mapToDouble( i -> i * 0.001).toArray();
在这种情况下,不会累积添加多个双打的错误
答案 1 :(得分:2)
double start = 200.0;
double end = 399.999;
double increment = 0.001;
for (double v = start; v < end + increment / 2; v += increment) {
System.out.printf("%.3f\n", v);
}
答案 2 :(得分:0)
以下是另一种方法:
public static void counterGenerator(double start, double end) {
DecimalFormat counterInDecimalFormat = new DecimalFormat("0.000");
String counterInString = counterInDecimalFormat.format(start);
System.out.println(counterInString); // This is the counter in String format.
double counter = Double.parseDouble(counterInString);
if (counter < end)
counterGenerator(start + 0.001, end);
return;
}
在上面的示例中,您在String
counterInString
格式
但是您不必担心与增加Double
实际驻留在String
变量中相关的问题。在代码中,您可以看到double counter
正在完成递增任务,使用String
类将其转换回DecimalFormat
。
此处将您的计数器设为String
可帮助您在0s
之类的数字中保留小数点后的200.000
。
希望它有所帮助!