float存在的意义是什么

dgwreghwr 2015-10-09 11:43:15
看了《程序员面试宝典》的一道题,里面说“printf在以printf("%f")的形式调用时,如果后面的参数是float,那么会自动转换成double型,”,然后又在网上搜到了这篇文章
http://www.cnblogs.com/Xiao_bird/archive/2010/03/26/1696908.html,最后一句话就是结论
不禁怀疑float类型存在的意义是什么?求解答或者共同探讨一下
...全文
410 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-10-11
  • 打赏
  • 举报
回复
比如MFC下CString类的Format也是这么做。。
mosquitoh 2015-10-11
  • 打赏
  • 举报
回复
因为printf自动把float提升为double,所以float无意义。
这是什么逻辑?
dustpg 2015-10-10
  • 打赏
  • 举报
回复
C语言支持不定参数, 经过这条函数, float会提升到double. 然后就认为float没意义? 有了double, float没意义? 那是不是有了long long, 那long, int, short,... 都没意义了. 民用级别显卡double处理速度远低于float处理速度, 就一个语言特性而已, 记住就行, 不要扯意义什么的.
fefe82 2015-10-10
  • 打赏
  • 举报
回复
引用 7 楼 dgwreghwr 的回复:
[quote=引用 4 楼 lm_whales 的回复:] float 小,计算也快 以前的做法是 除了存储外 所有参数传递,乃至数学运算,都是按照提升后的数据类型进行的。 如今,标准里,可以不提升了。 但是printf 这一类 变长参数函数,还是提升后再传入函数的
多谢,那为什么printf这一类函数要这么做?除了printf还有哪些函数也是这么做的?[/quote] 可变参数的 ... 部分都会这么做。
paschen 2015-10-10
  • 打赏
  • 举报
回复
现在double是用%lf了 float占用内存比double少一半啊,试想一个很大的数组或矩阵,不需要很高的精度,用double存就会比float浪费出很多空间 这也好比int与short的关系
只此冒泡君 2015-10-10
  • 打赏
  • 举报
回复
printf 是后来人为了输出写的一个函数,只是被做到标准里面去了, 如果它为了方便讲double 都变成float输出的话 ,你觉得double还有意义么?
dgwreghwr 2015-10-10
  • 打赏
  • 举报
回复
引用 4 楼 lm_whales 的回复:
float 小,计算也快 以前的做法是 除了存储外 所有参数传递,乃至数学运算,都是按照提升后的数据类型进行的。 如今,标准里,可以不提升了。 但是printf 这一类 变长参数函数,还是提升后再传入函数的
多谢,那为什么printf这一类函数要这么做?除了printf还有哪些函数也是这么做的?
lm_whales 2015-10-10
  • 打赏
  • 举报
回复
注意open GL 许多数据类型内部,都是用的 float ,不是 double
lm_whales 2015-10-10
  • 打赏
  • 举报
回复
float 小,计算也快 以前的做法是 除了存储外 所有参数传递,乃至数学运算,都是按照提升后的数据类型进行的。 如今,标准里,可以不提升了。 但是printf 这一类 变长参数函数,还是提升后再传入函数的
fly_dragon_fly 2015-10-10
  • 打赏
  • 举报
回复
意义就是它小了, 一般也用不了小数点后几位, 没必要double, 寸有所长吧
fefe82 2015-10-10
  • 打赏
  • 举报
回复
比如 float 的大小只有 double 的一半

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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