用Java编写程序: 输入若干对浮点数,对每对浮点数输出其精确的和与乘积。 以下输入样例为两对浮点数输入,实际上有可能有不定对数的浮点数需要输入计算。 注1:直接使用double类型数据进行运算,无法得到精确值。 注2:输出时直接调用BigDecimal的toString方法。
时间: 2024-09-29 21:10:26 浏览: 47
浮点运算部件-定点数和浮点数
在Java中,为了处理浮点数的精确加法和乘法,我们可以使用`java.math.BigDecimal`类,因为它可以提供任意精度的算术操作。下面是一个简单的Java程序示例,用于接收用户输入的一系列浮点数对,并计算它们的精确和与乘积:
```java
import java.math.BigDecimal;
import java.util.Scanner;
public class PrecisionArithmetic {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入浮点数对,格式如:1.0 2.5 (按回车结束输入):");
BigDecimal sum = BigDecimal.ZERO;
BigDecimal product = BigDecimal.ONE;
while (scanner.hasNextDouble()) {
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
// 使用BigDecimal进行精确计算
BigDecimal num1BD = BigDecimal.valueOf(num1);
BigDecimal num2BD = BigDecimal.valueOf(num2);
// 计算并打印结果
BigDecimal pairSum = num1BD.add(num2BD);
BigDecimal pairProduct = num1BD.multiply(num2BD);
System.out.printf("Pair (%.2f, %.2f): Sum = %.2f, Product = %.2f%n", num1, num2, pairSum.doubleValue(), pairProduct.doubleValue());
// 更新总和和乘积
sum = sum.add(pairSum);
product = product.multiply(pairProduct);
}
// 输出所有输入数对的最终结果
System.out.printf("\nOverall: Sum = %.2f, Product = %.2f%n", sum.doubleValue(), product.doubleValue());
scanner.close();
}
}
```
在这个程序中,我们使用`BigDecimal.valueOf()`将浮点数转换为精确的BigDecimal对象,然后通过`add()`和`multiply()`方法进行加法和乘法运算。最后,我们调用`doubleValue()`方法将结果转换回双精度浮点数进行输出。
阅读全文