温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Float浮点数怎么存数据库

发布时间:2026-11-10 08:21:39 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java 里把 Float 浮点数存到数据库,通常有 几种常见做法,选哪种取决于你对精度、范围、性能的要求。


一、直接用数据库浮点类型(最常见)

1️⃣ 使用 FLOAT / DOUBLE

适合:对精度要求不高的场景(如分数、比率、统计值)

Java 类型

Float f = 3.14f;

数据库字段(MySQL 为例)

CREATE TABLE test (
    id INT PRIMARY KEY,
    score FLOAT
);

JDBC 存储

PreparedStatement ps = conn.prepareStatement(
    "INSERT INTO test(id, score) VALUES (?, ?)"
);
ps.setInt(1, 1);
ps.setFloat(2, f);
ps.executeUpdate();

✅ 优点:简单、性能好
❌ 缺点:FLOAT/DOUBLE 有精度误差(二进制无法精确表示小数)


二、使用 DECIMAL(推荐用于金额)

2️⃣ 数据库用 DECIMAL,Java 用 BigDecimal

适合:金额、价格、精确计算

数据库

CREATE TABLE test (
    id INT PRIMARY KEY,
    price DECIMAL(10,2)
);

Java(不要直接用 Float)

BigDecimal price = new BigDecimal("9.99");

JDBC

ps.setBigDecimal(2, price);

✅ 优点:精度可控
❌ 缺点:计算稍慢

⚠️ 千万不要用 Float 存钱


三、把 Float 转成整数存储(规避精度问题)

3️⃣ 乘以倍数存 INT

例如:金额单位用“分”

Float money = 9.99f;
int fen = Math.round(money * 100);

数据库:

amount INT

读取时再除以 100

✅ 适合:简单金额、传感器数据
❌ 可读性差


四、存成字符串(不推荐)

value VARCHAR(50)
ps.setString(2, String.valueOf(f));

❌ 不能计算、不能排序
✅ 仅用于日志类数据


五、ORM 框架怎么用(如 MyBatis / JPA)

MyBatis

private Float score;
<result column="score" property="score" jdbcType=FLOAT/>

JPA

@Column(precision = 10, scale = 2)
private BigDecimal price;

六、选型建议(很重要)

场景 推荐方式
普通数值 FLOAT / DOUBLE
金额 DECIMAL + BigDecimal
高性能数值 INT(放大)
日志 VARCHAR

如果你能告诉我:

  • 用的什么数据库(MySQL / Oracle / PostgreSQL)
  • 是不是金额
  • 用的是 JDBC / MyBatis / JPA

我可以直接给你最合适的表结构和代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手