浮點轉整數的巨集

2021-05-26 02:34:03 字數 413 閱讀 1667

union luai_cast ;

#define lua_number2int(i,d)  /

printf("%d/n", i);

很神奇的巨集,可以試一下

這個巨集神奇的在正數和負數的雙精度浮點數時都可以正確工作,以四捨五入方式轉換為 32 位整數。

這個數字是 1.5*2^52 :) 小於 2^31 的數字在和這個magic number 相加的時候,按浮點加法的規則(以科學計數法記數),和一定按冪大的乙個對齊。而 1.5 是2進製的 1.1 在浮點標準中,小數點前的 1 是不需要記錄的。這樣,double 的前四位元組就被空出來。而需要轉換的整數將因為加法恰當的被置入對應的位置。

這個技巧並不總是適用,比如初始化 d3d9 以後,就會失效。因為 d3d 缺省會調整浮點運算的精度。在低精度模式下,這個技巧顯然不能工作

JS 浮點數轉整數的方法

概念 以第二個引數為基數來解析第乙個引數字串,通常用來做十進位制的取整 省略小數 如 parseint 2.7 結果為2 特點 接收兩個引數parseint string,radix 1 2 3 map parseint 結果 result 1,nan,nan 1 2 3 map parseint ...

c語言整數轉浮點數 浮點數的秘密

我們在學習 c 語言時,通常認為浮點數和小數是等價的,並沒有嚴格區分它們的概念,這也並沒有影響到我們的學習,原因就是浮點數和小數是繫結在一起的,只有小數才使用浮點格式來儲存。其實,整數和小數可以都使用定點格式來儲存,也可以都使用浮點格式來儲存,但實際情況卻是,c 語言使用定點格式儲存整數,使用浮點格...

整數(浮點數)轉字串

在實際專案中,我們不可避免的遇到需要將整數 浮點數 轉換為字串輸出 儲存為檔案或者顯示列印 這是乙個很常見的演算法,標準c庫甚至提供了諸如itoa,ltoa,之類的函式供大家呼叫。但是,在一些特殊場合,比如對功耗要求比較苛刻的場合,則對轉換速度提出了要求。在微控制器應用中,很多mcu沒有除法器,和除...