浮点转整数的宏
来源:互联网 发布:linux服务器架设 编辑:程序博客网 时间:2024/06/10 11:22
union luai_Cast { double l_d; long l_l; };
#define lua_number2int(i,d) { volatile union luai_Cast u; /
u.l_d = (d) + 6755399441055744.0; (i) = u.l_l; }/
printf("%d/n", i);
很神奇的宏,可以试一下
这个宏神奇的在正数和负数的双精度浮点数时都可以正确工作,以四舍五入方式转换为 32 位整数。
这个数字是 1.5*2^52 :) 小于 2^31 的数字在和这个magic number 相加的时候,按浮点加法的规则(以科学计数法记数),和一定按幂大的一个对齐。而 1.5 是2进制的 1.1 在浮点标准中,小数点前的 1 是不需要记录的。这样,double 的前四字节就被空出来。而需要转换的整数将因为加法恰当的被置入对应的位置。
这个技巧并不总是适用,比如初始化 D3D9 以后,就会失效。因为 D3d 默认会调整浮点运算的精度。在低精度模式下,这个技巧显然不能工作
- 浮点转整数的宏
- 浮点数转整数注意的地方
- javascript浮点数转整数
- 浮点数转整数时出现的一个问题
- 四极管:浮点数到整数的转换(转)
- 两个整数相除转浮点型变量/浮点型变量的输出
- 浮点数到整数的快速转换
- 浮点数到整数的快速转换
- 浮点数到整数的快速转换
- 浮点数到整数的快速转换
- 整数浮点数的二进制表示
- 浮点数到整数的转换
- 浮点数和整数之间的转换
- 21.浮点数值的整数次方
- 浮点数到整数的快速转换
- 整数和浮点数的溢出
- 浮点数准成整数四舍五入的问题
- 整数与浮点数的表示
- mysql查询更新时的锁表机制分析
- 修改Tomcat端口号步骤
- IP地址已经分配给另一个适配器的解决办法
- winform中datagridview 在单元格选中状态下(非编辑状态)输入一个字符产生重复的问题
- 设置mysql root账户密码
- 浮点转整数的宏
- 英语字母大小写转换
- argc argv -主函数main的参数 2011.06.08
- const用法详解
- android实现图片下载到sdcard中的例子,用进度条显示现在进度,同时间图片显示出来
- Android Adapter 接口中几个方法的研究
- 正则表达式判断文本框不能为空
- 验证文本框不能为空、Email合法性
- Linux 软件安装使用(12)gedit中文乱码问题