在 Java 中,float 和 double 都是浮点数类型,用来表示带小数部分的数字,但它们在精度、占用空间、使用方式和适用范围上有明显区别。
| 类型 | 关键字 | 位数 | 字节 | 精度(十进制有效数字) | 默认值 |
|---|---|---|---|---|---|
| 单精度浮点 | float |
32 位 | 4 字节 | 约 6–7 位 | 0.0f |
| 双精度浮点 | double |
64 位 | 8 字节 | 约 15–16 位 | 0.0d |
float:精度较低,适合对精度要求不高的场景double:精度更高,是 Java 中默认的浮点类型float f = 1.123456789f;
double d = 1.123456789012345;
System.out.println(f); // 可能丢失精度
System.out.println(d); // 精度更高
float:4 字节double:8 字节✅ 在大量数据存储(如数组、图形处理)时,float 更省内存
✅ 在科学计算、金融计算中,double 更安全
Java 中 小数默认是 double
float f = 1.2f; // 必须加 f
double d = 1.2; // 可以不加 d
// double d = 1.2d;
❌ 错误示例:
float f = 1.2; // 编译错误
double 和 float 性能差距很小float 更快| 场景 | 推荐 |
|---|---|
| 普通计算 | double |
| 科学计算 | double |
| 游戏 / 图形 | float |
| 嵌入式 / 内存敏感 | float |
| 金额计算 | ❌ 都不推荐(用 BigDecimal) |
System.out.println(0.1 + 0.2);
// 输出:0.30000000000000004
✅ 金额计算应使用:
BigDecimal
float是单精度、省内存;double是双精度、精度高、Java 默认使用。
如果你愿意,我也可以帮你:
float / double / BigDecimal免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。