2015-10-02 20 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

是的,我认为它的意思是“不要浪费任何东西”,而不是“做不可能的事情”! –

相关问题