繁体   English   中英

我有一个关于求和问题的 Java 逻辑问题要解决

[英]I have a Java logic question to solve about sum problem

我正在尝试获取一个列表并对其进行求和,但逻辑有点奇怪。

例如

General cost = 
         {234.456,

         345.456,

         456.567,

         567.678}

我试着

求和

一般成本 将每行小数点后的数字相加,如果不超过 1,则将小数点后的值传递到下一行。

在上面的情况下,我将一般费用一一调用

1-> 234(传递 0.456 到下一个)

2->345(345.456+0.456=345.912 0.912传给下一个,由于小数点后的数字不超过1,所以小数点后的数字照原样传)

3->457(456.567+0.912=457.479 0.479传给下一个,因为小数和大于1,数值加1,剩下的小数传给下一个)

4->568(567.678+0.479=568.157把0.157传给下一个,因为小数的和大于1所以给值加1,把剩下的小数传给下一个)

Sum-> 1604(求和,四舍五入到小数点后一位)

我正在努力让它变成这样。

你能做这个吗? 如果你能做到这一点,你应该用什么样的逻辑来做?

您可以通过初始化双类型局部变量sum来实现此目的

double sum = 0; // Widening Casting

并且使用单个循环迭代您的数组并使用适当的语句,例如if ... else if ... else来处理加法运算,包括我假设的最后一次四舍五入运算

sum += arrayItem; // Compound assignment operator

那你应该很好。

尝试这个。

public static void main(String[] args) {
    double[] costs = {234.456, 345.456, 456.567, 567.678};
    double carry = 0;
    double total = 0;
    for (double cost : costs) {
        double sum = cost + carry;
        carry = sum % 1;               // get fractional part of sum
        double newCost = sum - carry;  // get integer part of sum
        total += newCost;
        System.out.printf("cost=%.3f new cost=%.0f carry=%.3f%n", cost, newCost, carry);
    }
    System.out.printf("total=%.0f%n", total);
}

输出:

cost=234.456 new cost=234 carry=0.456
cost=345.456 new cost=345 carry=0.912
cost=456.567 new cost=457 carry=0.479
cost=567.678 new cost=568 carry=0.157
total=1604

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM