今日总结

浮点数表示
Java 中的浮点数(float 和 double)是近似值,并不能精确表示所有小数。例如:

public class PrecisionLoss {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
double sum = a + b; // 期望结果是 0.3

    System.out.println("Sum: " + sum); // 可能输出 0.30000000000000004
}

}

类型转换
在将浮点数转换为整数时,小数部分会被截断,可能导致数据损失。例如:

public class TypeConversion {
public static void main(String[] args) {
double value = 5.99;
int intValue = (int) value; // 小数部分被丢弃

    System.out.println("Converted Value: " + intValue); // 输出 5
}

}
使用 BigDecimal 解决精度问题
为了处理浮点数的精度问题,可以使用 BigDecimal 类,它提供高精度的计算。示例:

import java.math.BigDecimal;

public class BigDecimalExample {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal sum = a.add(b);

    System.out.println("Sum: " + sum); // 输出 0.3
}

}
Random 类提供了多种方法用于生成不同类型和范围的随机数。

import java.util.Random;

public class RandomExample {
public static void main(String[] args) {
Random random = new Random();

    // 生成一个整数
    int randomInt = random.nextInt(); // 生成一个随机整数
    System.out.println("随机整数: " + randomInt);

    // 生成一个范围在 [0, 100) 的整数
    int randomIntWithBound = random.nextInt(100); // 上界为 100
    System.out.println("随机整数(0-99): " + randomIntWithBound);

    // 生成一个双精度浮点数
    double randomDouble = random.nextDouble(); // 生成 [0.0, 1.0) 之间的随机浮点数
    System.out.println("随机双精度浮点数: " + randomDouble);
}

}

posted @ 2024-09-23 21:23  Look_Back  阅读(5)  评论(0编辑  收藏  举报