输入若干对浮点数,对每对浮点数输出其精确的和与乘积。 以下输入样例为两对浮点数输入,实际上有可能有不定对数的浮点数需要输入计算。 注1:直接使用double类型数据进行运算,无法得到精确值。 注2:输出时直接调用BigDecimal的toString方法。用java
时间: 2024-10-16 17:21:51 浏览: 63
在Java中,由于浮点数精度问题,处理大量浮点数的加法和乘法可能会导致误差积累。为了得到更精确的结果,我们可以使用`java.math.BigDecimal`类。下面是一个程序示例,它接受任意数量的浮点数对,并计算它们的精确和与乘积:
```java
import java.math.BigDecimal;
import java.util.Scanner;
public class PrecisionCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入浮点数对,每对之间用空格分隔:");
while (scanner.hasNextDouble()) {
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
BigDecimal bigDecimalNum1 = BigDecimal.valueOf(num1);
BigDecimal bigDecimalNum2 = BigDecimal.valueOf(num2);
BigDecimal sum = bigDecimalNum1.add(bigDecimalNum2);
BigDecimal product = bigDecimalNum1.multiply(bigDecimalNum2);
System.out.printf("数字对 (%f, %f) 的和: %.15f\n", num1, num2, sum.doubleValue());
System.out.printf("数字对 (%f, %f) 的乘积: %.15f\n", num1, num2, product.doubleValue());
}
scanner.close();
}
}
```
这个程序会持续读取用户输入的一对对浮点数,直到没有更多的输入为止。对于每一对,它创建`BigDecimal`对象来存储并进行精确计算。输出时,我们使用`.doubleValue()`方法从`BigDecimal`转换回`double`以便于打印。
阅读全文