百科问答小站 logo
百科问答小站 font logo



float类型的设计是否存在问题? 第1页

  

user avatar   haozhi-yang-41 网友的相关建议: 
      

这问题是个好问题,虽然无解——因为这已经是最优解了………

造成这个问题的原因主要是:提高精度对bit的占用太厉害了

例如说float,一共才32bit,就已经拿了23bit出来表示精度了,只可惜2^23只有7位10进制精度。

好,按照题主要求,我们增加一位10进制精度,那我们就需要27bit(2^27=134217728,刚好覆盖完8位10进制)。但这多出来的4bit从哪来?只能是指数部分了吧?指数少了4bit,覆盖范围就由现在的2^(2^7)=2^128=10^38,急剧缩减为2^(2^3)=2^8=256。如果你到这还看不懂的话,那我再提醒你:而浮点数规定小数点左边只能补一个1,也就是说,这时按照你的“新式float标准”,连个1000都表达不出来……

总而言之,你太小看了指数的增长速度了。尤其在浮点数的设计里,范围的变动影响还是2阶指数的。所以虽然你看着不起眼,但只要你随便拿走几个bit,原来看着近乎天文数字的表示范围,一下子就沦落到连买部手机的价钱都表示不出来了。

最多最多,就稍微微调一下,多拿一个bit给数值,让float可以完整的表示7位10进制精度:2^23=8388608,而2^24=16777216,这也许会用着爽一些。至于范围嘛,虽然开了个方,但好歹还是有10^19的范围,起码亿亿级别的数字还是够用的。


最后我想吐槽一下,是谁加上“c++”这个标签的?

虽然float确实是c/c++的类型,但c/c++的编译器无非是用浮点指令去操作它而已,实际精度和范围展示本质上是cpu/gpu决定的。

至于cpu和ieee754之间,当初是谁先这么定的,到底是鸡生蛋还是蛋生鸡,那就看谁有功夫去考究一把了。


user avatar   sheng-xun-69 网友的相关建议: 
      
“大坐标对象时产生的抖动问题”?

坐标多大?

如果用float记录一座城市,单位用“米”,城市半径算5000米的话,外围区域误差多少?

5000=2的12次方,23位float尾数乘上12次方,那小数点后面也能剩下11位

误差范围大概是“1/2000”米,也就是0.5“mm”,怎么就不够用了?


“Z-fighting”?

这能怪float吗?

你把顶点数据换成double,z-fighting照样发生

这个问题根本就不是float造成的,而是z-buffer位宽只有24bit造成的


那么,“z-buffer位宽为什么只有24bit”呢?

别问我

问nVidia黄仁勋先生

问AMD桑德斯先生和现任CEO苏姿丰女士

GPU是他们设计的


user avatar   Ivony 网友的相关建议: 
      

我觉得是你压根儿没搞明白啥叫作浮点数,你要精度高直接用整型不就行了么?全精度的……


user avatar   pansz 网友的相关建议: 
      

不需要,我已经几乎两年没用过有线充电了。

把常用场合都部署好无线充电以后,真的不用操心换手机换充电器之类的事情。

其实很简单的一个问题:取消耳机口之后,各位是改用L口耳机C口耳机,还是改用无线耳机?我曾经以为会普及L口或者C口耳机,然而现实就是无线耳机开始普及。

无线充电座普及之后,由于它没有插拔,所以她的寿命其实远比手机要长。

--

所以,如果你没有无线充,强烈建议你尝试无线充。




  

相关话题

  既然在语言层面上 Java 要落后于 C#,那为何国内 Java 架构到处都是? 
  如何看待明尼苏达大学因插入实验性漏洞,被禁止贡献 Linux 内核代码? 
  为什么使用virtual关键字在C++与C#会出现不同的效果?求解答。 
  人工智能为什么越来越看不懂了? 
  我同学说学 C 语言没用,该如何反驳呢? 
  如何理解「量子退火」? 
  GPU 与 CPU 比较,为什么说 GPU 更适合深度学习? 
  如何编程判断一个数是否是质数? 
  有哪些值得一看的数学家、物理学家或者计算机科学家的传记? 
  你的程序员学习之路是怎样的?你现在对于编程有哪些感想? 

前一个讨论
湖畔大学首次公开办学情况,5 年只录取了 254 个学生,如何看待这一办学模式?具有怎样的社会意义?
下一个讨论
程序员该选择Macbook Pro吗?





© 2025-02-05 - tinynew.org. All Rights Reserved.
© 2025-02-05 - tinynew.org. 保留所有权利