浮点和定点运算的一个问题

回南山种豆 2011-11-21 05:14:33
今天看了一本书,看了了2个问题
1 mysql中 浮点比定点运算快(之前我一直理解是相反的)


2在mysql 5.0及以上版本中,服务器自身进行了定点运算,因为CPU并不支持它进行直接计算(前面是原文引用书本)浮点运算会快一点,就体现在他说的这一点,因为浮点直接在CPU上进行。

请各位大侠确认这是正确的吗?

...全文
150 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
回南山种豆 2011-11-29
  • 打赏
  • 举报
回复
谢谢你了
回南山种豆 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xuzuning 的回复:]

如果所谓的“定点”是 decimal 类型的数的话,你书中的解释是正确的
浮点数 float 是以二进制方式保存的,计算时计算机将通过浮点运算协处理器进行计算
而 mysql 的 decimal 类型数据是以字符串方式存储的,计算时需先将字符串转换成“数”,仅就这一点,已经就比浮点运算慢了。况且为保证计算精度,计算时是整数部分和小数部分分开的。这就又慢了一些
[/Quote]

感觉 你这个理解是正确的。
helloyou0 2011-11-25
  • 打赏
  • 举报
回复
嗯,应该是我把你的话理解错了
helloyou0 2011-11-25
  • 打赏
  • 举报
回复
终于想起来翻到了:

我的书上是写的"Decimal":

大致如下:

2在mysql 5.0及以上版本中,服务器自身进行了"Decimal"运算,因为CPU并不支持它进行直接计算


如果你的书上写的是"定点", 那就是翻译错了
xuzuning 2011-11-25
  • 打赏
  • 举报
回复
如果所谓的“定点”是 decimal 类型的数的话,你书中的解释是正确的
浮点数 float 是以二进制方式保存的,计算时计算机将通过浮点运算协处理器进行计算
而 mysql 的 decimal 类型数据是以字符串方式存储的,计算时需先将字符串转换成“数”,仅就这一点,已经就比浮点运算慢了。况且为保证计算精度,计算时是整数部分和小数部分分开的。这就又慢了一些
helloyou0 2011-11-25
  • 打赏
  • 举报
回复
一开始以为你说的"定点"是指整数.

又看了一下手册,应该是这样的,decimal翻译成定点也也以,因为的确是"定点小数"

但是我们以前学计算机原理时将的定点数,和mysql里的这个decimal不一样,
以前学的那个定点数就是整数或纯小数(小数点在最左),其它的定点小数可以转换成这两种.

但是mysql的decimal无法做这个转换,
原因是因为decimal的表示范围太大,它的位数可以到65位,这个远远超过了64位机(更不要说32位)能表示的整数范围,所以必须用软件方法实现精确计算

复习了半天计算机原理,有兴趣的一起复习吧:
http://218.5.241.24:8018/C35/Course/ZCYL-HB/WLKJ/jy/Chap02/2.1.1.1.htm
http://online.ncu.edu.cn/eol/homepage/common/opencourse/onlinepreview.jsp?countadd=1&lid=5272&resid=121906717
happypiggy2010 2011-11-25
  • 打赏
  • 举报
回复
现在的机器速度,应该这个差别不是很大的。
helloyou0 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 z1988316 的回复:]

引用 1 楼 helloyou0 的回复:

能否提供点上下文和出处?

觉得不对

上下文有点多,不好列出来,具体出处是高性能mysql 65页
[/Quote]

说下在那一章节,万一我手头的和你不是一个版本呢,
回去翻翻
回南山种豆 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 heyli 的回复:]

惭愧 我也有这本书 看过不止一遍 不过远没楼主来得仔细
按照书上说的 浮点直接在CPU上进行 而DECIMAL是在服务器上进行 应该可以理解为是要mysql自身处理 在内部可能转为 double 所以应该有可能
等大牛解释
[/Quote]

应该可以理解为是要mysql自身处理
mysql 最终还是在CPU上运算的啊
回南山种豆 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 heyli 的回复:]

惭愧 我也有这本书 看过不止一遍 不过远没楼主来得仔细
按照书上说的 浮点直接在CPU上进行 而DECIMAL是在服务器上进行 应该可以理解为是要mysql自身处理 在内部可能转为 double 所以应该有可能
等大牛解释
[/Quote]
感觉这本书翻译太烂了,唉
heyli 2011-11-22
  • 打赏
  • 举报
回复
惭愧 我也有这本书 看过不止一遍 不过远没楼主来得仔细
按照书上说的 浮点直接在CPU上进行 而DECIMAL是在服务器上进行 应该可以理解为是要mysql自身处理 在内部可能转为 double 所以应该有可能
等大牛解释
回南山种豆 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 helloyou0 的回复:]

能否提供点上下文和出处?

觉得不对
[/Quote]
上下文有点多,不好列出来,具体出处是高性能mysql 65页
回南山种豆 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 helloyou0 的回复:]

能否提供点上下文和出处?

觉得不对
[/Quote]上下文有点对,具体出处是高性能mysql 65页
helloyou0 2011-11-22
  • 打赏
  • 举报
回复
能否提供点上下文和出处?

觉得不对

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧