float、double 这类 浮点数 相比,DECIMAL 是另一种完全不同的数值类型

floatdouble 这类**“浮点数”**相比,DECIMAL 是另一种完全不同的数值类型,叫做:


DECIMAL 是什么?

DECIMAL 是“定点数”类型(fixed-point),用于存储精确的小数值,比如:

  • 金额(¥9.99)
  • 利率(0.035%)
  • 库存数量(精确到 0.001)

✅ 举个例子说明区别

我们用 银行转账来打比方:

类型举例精度有可能出错?适合场景
FLOAT0.1 + 0.2 = ?不能完全精确✅ 有误差!科学计算、图像、AI
DECIMAL0.1 + 0.2 = 0.3精确计算❌ 不会错!金融、电商、财务
-- DECIMAL 精确计算:适合金融等场景
SELECT 0.1 + 0.2;               -- 结果:0.3(如果是 DECIMAL 类型)-- FLOAT 浮点误差(某些数据库/语言里)
SELECT CAST(0.1 AS FLOAT) + CAST(0.2 AS FLOAT);  
-- 结果:0.30000000000000004 (可能)

✅ 语法说明(以 MySQL 为例)

DECIMAL(M, D)
  • M:总位数(精度)
  • D:小数位数(scale)

举例:

DECIMAL(10, 2)   -- 最多存储 10 位数,其中 2 位是小数,比如:99999999.99
DECIMAL(5, 0)    -- 只能存整数,最多 99999

✅ 和 float 的区别总结

特性DECIMALFLOAT / DOUBLE
精度控制高,精确低,存在误差(特别是小数)
占用空间相对更大更节省内存
性能稍慢更快(特别是在大数据/向量计算中)
使用场景金融、电商、财务等科学计算、统计、图形渲染等

✅ Python 和 SQL 中的对比图(数值类型)

类型名称精度内存精度是否安全场景说明
float~74字节❌ 可能误差科学、图形
double / float64~158字节❌ 精度有限AI、科学建模
decimal.Decimal(Python)任意可控✅ 精确计算金融、电商
DECIMAL(M,D)(SQL)精确✅ 精确控制金融、发票、钱币计算

✅ 总结一句话

DECIMAL 是为**“精确计算”而设计的数值类型**,特别适合表示 钱、利率、精度要求高的值;它和 float/double 不同,不会产生误差,但性能稍慢、占内存更大。


  • DECIMAL 在 Python 中怎么用(用 decimal.Decimal
  • DECIMAL 在 MySQL 中创建表怎么写
  • 怎么选用 DECIMAL vs FLOAT 在一个项目里

我们从 Python 和 SQL 实战 两部分,来深入看看 DECIMAL 的用法和典型应用场景。

🧠 第一部分:Python 中的 decimal.Decimal 用法

✅ 为什么要用 decimal.Decimal

Python 默认的 float 类型是二进制浮点数,有误差:

print(0.1 + 0.2)  # 输出:0.30000000000000004 ❌

如果你在做财务、支付金额等场景,这种误差是不能接受的!


✅ 正确做法:使用 decimal.Decimal

from decimal import Decimal, getcontextgetcontext().prec = 10  # 设置精度(可选)a = Decimal('0.1')
b = Decimal('0.2')
c = a + bprint(c)  # ✅ 输出:0.3

注意:不要传 Decimal(0.1),要传 '0.1' 字符串,否则误差还是会传染。


✅ Decimal 的实际例子:金额结算

from decimal import Decimalunit_price = Decimal('199.99')
quantity = Decimal('3')
tax_rate = Decimal('0.07')subtotal = unit_price * quantity
tax = subtotal * tax_rate
total = subtotal + taxprint("总金额:", total)  # ✅ 精确金额计算

🧠 第二部分:SQL(MySQL)中 DECIMAL 的使用

✅ 表结构定义示例

CREATE TABLE orders (id INT PRIMARY KEY,product_name VARCHAR(100),price DECIMAL(10, 2),   -- 价格最多 99999999.99,保留 2 位小数tax_rate DECIMAL(4, 3)  -- 比如 0.075 (7.5%)
);

✅ 插入数据

INSERT INTO orders (id, product_name, price, tax_rate)
VALUES (1, 'iPhone 15', 9999.99, 0.075);

✅ 精确计算金额(防止浮点误差)

SELECTproduct_name,price,tax_rate,ROUND(price * tax_rate, 2) AS tax,ROUND(price + (price * tax_rate), 2) AS total
FROM orders;

🧠 第三部分:什么时候选 DECIMAL vs FLOAT

场景推荐类型理由
金额、会计、发票等金融应用DECIMAL要求精确到分,浮点误差无法接受
科学计算 / AI / 图形渲染FLOAT / DOUBLE追求性能,不怕少许精度误差
用户评分(比如评分4.6分)DECIMAL(2,1)FLOAT都可以,用 DECIMAL 更稳
坐标、距离、角度、物理量FLOAT通常不需要那么精确,追求速度

✅ 小结:一句话对比

DECIMAL 是精准,适合钱;FLOAT 是高性能,适合科学。
如果你要存 9.99 元,请用 DECIMAL(5,2)
如果你要算宇宙中恒星的位置,请用 float64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java应用10(客户端与服务器通信)

Java客户端与服务器通信 Java提供了多种方式来实现客户端与服务器之间的通信,下面我将介绍几种常见的方法: 1. 基于Socket的基本通信 服务器端代码 import java.io.*; import java.net.*;public class SimpleServer {public static void main(String…

pytorch基本运算-范数

引言 前序学习进程中,已经对pytorch基本运算有了详细探索,文章链接有: 基本运算 广播失效 乘除法和幂运算 hadamard积、点积和矩阵乘法 上述计算都是以pytorch张量为运算元素,这些张量基本上也集中在一维向量和二维矩阵&#x…

EasyRTC音视频实时通话助力新一代WebP2P视频物联网应用解决方案

一、方案背景​ 物联网技术深刻变革各行业,视频物联在智慧城市、工业监控等场景广泛应用。传统方案依赖中心服务器中转,存在传输效率低、网络负载大的问题。新一代WebP2P视频物联技术实现设备直连,降低网络压力并提升传输效率,成…

DAY 15 复习日

浙大疏锦行 数据使用爬虫爬取weibo数据,下面是代码 import datetime import os import csv import timeimport numpy as np import random import re import urllib.parse import requests from fake_useragent import UserAgentdef init():if not os.path.exists…

SSL/TLS 协议详解:安全通信的基石

一、概述 SSL(Secure Sockets Layer) 及其继任者 TLS(Transport Layer Security) 是位于 传输层(TCP)与应用层之间 的加密协议,用于在网络通信中实现 机密性、身份认证和数据完整性。 核心目标…

使用子树合并策略更新git项目的部分目录

背景 正在开发的一个项目中引用了第三方库的源码,由于历史原因,源码的引用并不是很规范(直接下载下来后作为自己项目的部分源码使用,还进行了一些修改),具体如下: 我有一个本地git项目project…

pikachu通关教程-CSRF

CSRF(get) 用bp进行抓包 选择action value值的修改 点击test in browser copy然后放在bp代理的浏览器上,会出现一个提交按钮,这时候点击之后信息就被修改了。 CSRF(post) 请求的方式不同,其他都是一样 CSRF Token 存在cookie 首先要先下载一…

AI驱动游戏开发:Unity与ML-Agents结合

AI驱动游戏开发:Unity与ML-Agents结合 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 AI驱动游戏开发:Unity与ML-Agents结合摘要引言技术架构与开发流程1. Unity与ML-Agents协同机制2. 开发…

如何给windos11 扩大C盘容量

动不动C盘就慢了,苹果逼着用户换手机,三天两头更新系统,微软也是毫不手软。c盘 从10个G就够用,到100G 也不够,看来通货膨胀是部分行业的。 在 Windows 11 中扩大 C 盘容量,主要取决于磁盘分区布局和可用空…

Kafka入门-消费者

消费者 Kafka消费方式:采用pull(拉)的方式,消费者从broker中主动拉去数据。使用pull的好处就是消费者可以根据自身需求,进行拉取数据,但是坏处就是如果Kafka没有数据,那么消费者可能会陷入循环…

SpringBoot自动化部署实战技术文章大纲

技术背景与目标 介绍SpringBoot在现代开发中的重要性自动化部署的价值:提升效率、减少人为错误、实现CI/CD适用场景:中小型Web应用、微服务架构 自动化部署核心方案 基于Docker的容器化部署 SpringBoot应用打包为Docker镜像使用Docker Compose编排多容…

TDengine 集群运行监控

简介 为了确保集群稳定运行,TDengine 集成了多种监控指标收集机制,并通过 taosKeeper 进行汇总。taosKeeper 负责接收这些数据,并将其写入一个独立的 TDengine 实例中,该实例可以与被监控的 TDengine 集群保持独立。TDengine 中的…

C# 委托UI控件更新例子,何时需要使用委托

1. 例子1 private void UdpRxCallBackFunc(UdpDataStruct info) {// 1. 前置检查防止无效调用if (textBoxOutput2.IsDisposed || !textBoxOutput2.IsHandleCreated)return;// 2. 使用正确的委托类型Invoke(new Action(() >{// 3. 双重检查确保安全if (textBoxOutput2.IsDis…

[10-2]MPU6050简介 江协科技学习笔记(22个知识点)

1 2 3 欧拉角是描述三维空间中刚体或坐标系之间相对旋转的一种方法。它们由三个角度组成,通常表示为: • 偏航角(Yaw):绕垂直轴(通常是z轴)的旋转,表示偏航方向的变化。 • 俯仰角&a…

虚拟环境共享系统包

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 虚拟环境共享系统包 python basic_pipelines/detection.py如果报错显示如下: Traceback (most recent call last):File "/home/ai/hailort/hailo-rpi5-exam…

Java求职者面试题解析:基础概念、计算机基础与源码原理

Java求职者面试题解析:基础概念、计算机基础与源码原理 第一轮:基础概念问题 1. 什么是Java的跨平台特性? Java的跨平台特性是指Java程序可以在任何支持Java虚拟机(JVM)的设备上运行,而无需重新编译。这…

网页前端开发(基础进阶4--axios)

Ajax Ajax(异步的JavaScript和XML) 。 XML是可扩展标记语言,本质上是一种数据格式,可以用来存储复杂的数据结构。 可以通过Ajax给服务器发送请求,并获取服务器响应的数据。 Ajax采用异步交互:可以在不重新加载整个页面的情况下&am…

设计模式-迪米特法则

迪米特法则 迪米特法则 (Law of Demeter, LoD),也被称为“最少知识原则 (Principle of Least Knowledge)”,是面向对象设计中的一个重要原则。 核心思想:一个对象应该对其他对象有尽可能少的了解。 更具体地说,它规定了一个对象…

结构性-代理模式

动态代理主要是为了处理重复创建模板代码的场景。 使用示例 public interface MyInterface {String doSomething(); }public class MyInterfaceImpl implements MyInterface{Overridepublic String doSomething() {return "接口方法dosomething";} }public class M…

Unity大型项目资源框架

🎯 Unity大型项目资源管理:低端机检测后自动切换资源框架(大厂风格) 🧩 框架目标 ✅ 启动时检测机型性能,判定设备等级 ✅ 同一资源有高配/中配/低配不同压缩格式 ✅ 根据设备等级,加载对应资源包(AB) ✅ 支持动态切换(可用来切换特效/贴图分辨率/模型LOD) ✅ 保证…