从版本 5.0.3 开始,在 mysql 表的小数字段中存储负数

2023-11-21

  1. 我的表中很少有带有小数类型金额列的字段。
  2. 此列将包含存款金额(正值)或取款金额(负值)。
  3. 我将正值存储为 120,将负值存储为 -50。
  4. 我对该列求和并得到了预期的结果。
  5. Mysql版本是:5.1.33-community。
  6. 当我检查有关十进制的 mysql 文档时,我对它们的描述感到困惑。

  7. Before MySQL 5.0.3, if you inserted +0003.1 into a DECIMAL(5,1) column, it was stored as +0003.1. As of MySQL 5.0.3, it is stored as 3.1. For negative numbers, a literal - character is no longer stored. Applications that rely on the older behavior must be modified to account for this change. http://dev.mysql.com/doc/refman/5.0/en/precision-math-decimal-changes.html

  8. 当我在 phpmyadmin 中列出行时,我可以看到负号,当我计算结果时,结果符合预期。但文件说不会出现任何迹象。

  9. 用十进制存储负数好不好(我在学校没学过吗?很困惑)?...或者我们必须使用浮点数。

  10. 我不知道浮动会使计算复杂化,并建议在某些条件下坚持使用小数。

    我想就此提出建议。


据我了解,文档说它不会存储literal "-" 特点,这意味着它现在可能正在执行其他有符号 INTEGER 字段一直执行的操作,并且它存储一个符号位来表示负数。

您仍然会在数字前面看到一个减号,因为它是由 MySQL 根据该符号位生成的。

如果你不明白符号位,你可以考虑一下有符号字节如何存储从-128到127的数字,而无符号字节可以存储从0到255的数字。那是因为有符号数字中的8位之一是用于存储 +/-(1 为负数,0 为正数),而其余位提供最多 2^7(-128 或 127)的数字。

因此,例如,如果位 1111 有符号位,则它们等于 -7(负+4+2+1),但如果它们无符号,则等于 15(8+4+2+1)。存储的位数仍然相同。

您可能想知道为什么有符号数的负界可以使用第 8 位,而正界仅限于 7 位之和(比第 8 位少 1)。这是因为 10000000 同时被认为是负数和第 8 位,因为它的 -0 表示与表示 0 的 00000000 是多余的。负零和正零之间没有区别,因此负的最高有效位始终是该值该位本身(但为负)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从版本 5.0.3 开始,在 mysql 表的小数字段中存储负数 的相关文章

随机推荐

  • 获取CPU/内存利用率的跨平台方法[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 寻找一个库或相当跨平台的方法来获取 C C 中的 CPU 利用率 内存利用率等 除了 getrusage 之外 我需要整个系统 而不是一个进程 我查
  • Data Studio 中的自定义查询出现无效日期错误

    我正在尝试在 Data Studio 中使用自定义查询 BigQuery 准备图表 但是 在使用 Data Studio 日期参数时出现无效日期错误 DS START DATE and DS END DATE 这是我的查询 SELECT c
  • 访问共享网络文件夹

    我需要通过 VBA 访问网络文件服务器上托管的文件夹 该文件夹只能通过我有用户名和密码的服务帐户 与普通用户帐户不同 以书面形式访问 通过 UI 我可以看到该文件夹 并将其映射为本地驱动器 但为了以书面形式访问它 我需要从 Windows
  • “错误:选项 --single-version-externally-management 无法识别”表示什么?

    我似乎突然开始遇到错误error option single version externally managed not recognized使用时pip install与各种包 包括PyObjC and astropy 我以前从未见过这
  • ZLib Inflate() 失败并显示 -3 Z_DATA_ERROR

    我试图通过调用 inflate 函数来解压缩文件 但即使我使用网站上的示例程序 它也总是失败并出现 Z DATA ERROR 我想也许我的 zip 文件不受支持 我在下面附上了 zip 标题的图片 这是我编写的用于执行解压缩的函数 我一次读
  • 为什么用户定义的移动构造函数会禁用隐式复制构造函数?

    当我阅读 boost shared ptr hpp 时 我看到了这段代码 generated copy constructor destructor are fine if defined BOOST HAS RVALUE REFS exc
  • 如何知道 Firefox 中是否单击了刷新按钮或浏览器后退按钮? [复制]

    这个问题在这里已经有答案了 在 Firefox 中如何知道是否单击了刷新按钮或单击了浏览器后退按钮 对于这两个事件 onbeforeunload 方法是一个回调 对于 Internet Explorer 我的处理方式如下 function
  • ReactJS - FCM 无法在 safari 浏览器中工作[重复]

    这个问题在这里已经有答案了 我正在尝试在我的 ReactJS 应用程序中实现 FCM 推送通知 它在 chrome 和 firefox 浏览器中完美运行 但在 safari 浏览器中遇到问题 FirebaseError 消息传递 此浏览器不
  • 应用程序提供的字体列表 (iOS)

    有谁知道如何从 Xcode 中 info plist 文件中的 应用程序提供的字体 键获取自定义字体列表 谢谢 以下代码从 Info plist 中读取自定义字体文件列表 并从字体文件中提取完整的字体名称 部分代码复制自https stac
  • 在 .NET 应用程序中使用 ApacheFOP v1.0

    有人成功地将 Apache FOP v1 0 库编译为 NET DLL 吗 我正在使用位于以下位置的 IKVM 语法 http onjava com pub a onjava 2004 08 18 ikvm html 然而 编译后的DLL似
  • Karma 错误 - 未知提供商:$$asyncCallbackProvider

    尝试通过 grunt 运行我的业力测试 但出现错误 Error injector modulerr Failed to instantiate module ngMock due to Error injector unpr Unknown
  • 如何动态改变ImageView高度

    我有一个用于 ListView 单元格的简单线性布局 它有一个图像视图 图像将从互联网下载 因此尺寸可以不同 但是 我想将imageview的宽度设置为fill parent 这是固定的 并在运行时动态改变图像高度 设置图像高度的规则 如果
  • 在调用保存字符串 ID 之前,必须手动分配此类的 ID

    已经阅读了很多关于同一问题的问题 但我仍然无法解决这个问题 我需要有一个String我的数据库上的主键 import javax persistence Entity import javax persistence Id Entity p
  • 显示 system.data.datarowview 的组合框数据绑定

    我将组合框与数据源 显示成员 值成员绑定 它在我的电脑上运行良好 但在客户端电脑上无法运行 以下是我的源代码 cbxAlloyBinding 方法是从 UserControl 的构造函数中调用的 private void cbxAlloyB
  • 从 shell 脚本读取 python 脚本中带空格的参数

    运行 python 脚本时如何读取带空格的参数 UPDATE 看来我的问题是我通过 shell 脚本调用 python 脚本 这有效 gt python script py firstParam file with spaces txt o
  • 如何检测图像何时失焦?

    有时 我们的光学检测系统会失焦 导致测量结果无意义 我的任务是开发一个 失焦 探测器 用于驱动相机系统的 Z 轴 我可用的图像是 bmp 我正在寻找方法和算法来研究 例如 我应该隔离特征并测量一致性 还是可以使用边缘检测 This is t
  • '^' 在 C#(枚举)中起什么作用?

    我正在阅读一些第 3 方代码 发现了以下内容 x Flags x Flags Flags Hidden 它有什么作用 我使用了 和 对于带有枚举的按位 与 和 或 但这是我第一次看到该符号 是 C 中的按位异或运算符 编辑 如果 a 为真且
  • T-SQL CASE 子句:如何指定 WHEN NULL

    我写了一个类似这样的T SQL语句 原来的看起来不同 但我想在这里给出一个简单的例子 SELECT first name CASE last name WHEN null THEN Max ELSE Peter END AS Name FR
  • 调整 XORShift 生成器以返回最大值内的数字

    我需要生成最大范围内的随机整数 自从性能至关重要 我决定使用 XORShift 生成器而不是 Java 的 Random 类 long seed System nanoTime seed seed lt lt 21 seed seed gt
  • 从版本 5.0.3 开始,在 mysql 表的小数字段中存储负数

    我的表中很少有带有小数类型金额列的字段 此列将包含存款金额 正值 或取款金额 负值 我将正值存储为 120 将负值存储为 50 我对该列求和并得到了预期的结果 Mysql版本是 5 1 33 community 当我检查有关十进制的 mys