日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浮点数与定点数问题

發布時間:2025/3/18 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浮点数与定点数问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在MOBA項目開發過程中,LFIXED類中定義了許多浮點轉定點的常量。

這個類用了很久,以往的同步測試中也沒有因為這些常量的使用產生過不同步問題。

然而,總覺得哪里不安全,想了很久,終于把長久以來的疑問想清楚了:幀同步游戲中浮點數為什么不安全,如何做才能安全(同步)?

對于任何一個浮點數,在不同硬件上可能數值不同,產生不同的原因是什么?

是不同硬件的算法不同嗎?不是。

所有硬件都是按照浮點數的通用算法存儲的,比如 0.1,

0.1f?轉換為二進制的方法是不斷乘2取整數部分,直到精度達到要求(并對后面的一位四舍五入)。

產生不同數值的原因就在精度問題,不同機器的精度不同時就產生了不同的數值。

由以上原理論知:像0.5,0.25,0.125這樣 (1/2)的N次方的數值不會產生精度不同問題,因為它們能在精度范圍內存儲,

但超出精度存儲范圍的(1/2)的N次方的小數也可能會有問題的,如? (1/2)的24次方

?

其實幀同步游戲中用到的浮點數常量并不多,可以先一臺機器上算出需要用到的浮點常量對應的定點數,存儲到文件中,運行加載出來。

運行其間可能會用到浮點數,比如求兩個數值的比例,這時候的解決辦法是? A*1.0F/B ,其中A,B是定點數

至于走路同步問題,游戲啟動時,各英雄位置是從文件中讀取的定點數,因此保證了英雄初始位置各機器同步。走路過程中,服務器只廣播方向(定點數),各端根據定點數速度和轉向算出新位置,這樣英雄每走一步后,其位置在各機器也是同步的

?

總結

以上是生活随笔為你收集整理的浮点数与定点数问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。