2015-10-02 22 views

回答

2
//Packing 
float a = 0.45; 
float b = 0.55; 
uint aScaled = a * 0xFFFF; 
uint bScaled = b * 0xFFFF; 
uint abPacked = (aScaled << 16) | (bScaled & 0xFFFF); 
float finalFloat = asfloat(abPacked); 

//Unpacking 
float inputFloat = finalFloat; 
uint uintInput = asuint(inputFloat); 
float aUnpacked = (uintInput >> 16)/65535.0f; 
float bUnpacked = (uintInput & 0xFFFF)/65535.0f; 
+0

不錯。 「最佳精度」部分顯然是虛假的,因爲可用位的數量減半。所以任何*可以被存儲在剩餘的內容中都可以被認爲是「最優」的。 – usr2564301

+1

是的,我認爲它的意思是「不要浪費任何東西」,而不是「做不可能的事情」! –

相關問題