簡體   English   中英

gpus.js(webgl?)float32問題

[英]gpus.js (webgl?) float32 issue

我可能缺少明顯的東西,但是我正在嘗試gpu.js並得到一些奇怪的結果。 我只想確保我沒有做過明顯很愚蠢的事情(這很可能)。

不知道這是我正在做什么的問題,還是使用WebGL通過gpu.js完成計算的方式。

我創建了一個新的GPU和新的內核:

const gpu = new GPU();
const test = gpu.createKernel(function () { 
    return 255 + 
        (255 * 256) + 
        (255 * 256 * 256) + 
        (255 * 256 * 256 * 256); 
}).setOutput([1]);

const res = test();

這給了我4294967296的結果(包含在float32array中)。

如果我從控制台運行相同的計算,則會得到4294967295的結果。

IEEE 754單精度(32位)浮點值由24個有效位和8個指數位組成。

4294967295是0xffffffff(整數),因為它只有24個有效位,所以不能以完全精度存儲在32位浮點中。
4294967296是0x100000000(整數),可以存儲在32位浮點數中,因為它是0x4f800000(浮點數)。

相比之下, IEEE 754雙精度(64位)浮點值由53個有效位和11個指數位組成。
因此,一個64位浮點值可以精確存儲值4294967295(0x41efffffffe00000)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM