C#的String轉(zhuǎn)換成float防止精度丟失問題的解決
更新時(shí)間:2023年07月12日 09:30:07 作者:蒼狼王unity學(xué)院
這篇文章主要介紹了C#的String轉(zhuǎn)換成float防止精度丟失問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
C#的String轉(zhuǎn)換成float防止精度丟失
精度問題
float x = float.Parse(s);
在提交小數(shù)的時(shí)候會(huì)出現(xiàn)精度丟失問題,
舉個(gè)例子:
unity中的Position中的x,y,z為2.073282,-1.106536,轉(zhuǎn)換成float肯定會(huì)丟失值
float
:浮點(diǎn)型,含字節(jié)數(shù)為4,32bit,數(shù)值范圍為-3.4E38~3.4E38(7個(gè)有效位)double
:雙精度實(shí)型,含字節(jié)數(shù)為8,64bit數(shù)值范圍-1.7E308~1.7E308(15個(gè)有效位)decimal
:數(shù)字型,128bit,28個(gè)有效位 float 與計(jì)算機(jī)中數(shù)值表示方法有關(guān),不是準(zhǔn)確數(shù)據(jù). decimal 是準(zhǔn)確數(shù)據(jù),不會(huì)出現(xiàn)這個(gè)問題
解決辦法
Unity C# String轉(zhuǎn)Float
//方法1 float f1 = Convert.ToSingle(s); //方法2 float f2; if (!float.TryParse(s, out f2)) { Console.WriteLine("無法轉(zhuǎn)換!"); }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#實(shí)現(xiàn)XSL轉(zhuǎn)換的方法
這篇文章主要介紹了C#實(shí)現(xiàn)XSL轉(zhuǎn)換的方法,結(jié)合實(shí)例分析了C#執(zhí)行XSL轉(zhuǎn)換XML的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11C# Dictionary和SortedDictionary的簡(jiǎn)介
今天小編就為大家分享一篇關(guān)于C# Dictionary和SortedDictionary的簡(jiǎn)介,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10Unity實(shí)現(xiàn)游戲卡牌滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)游戲卡牌滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02C#啟動(dòng)和停止windows服務(wù)的實(shí)例代碼
這篇文章介紹了C#啟動(dòng)和停止windows服務(wù)的實(shí)例代碼,有需要的朋友可以參考一下2013-09-09C#中利用斷點(diǎn)操作調(diào)試程序的步驟詳解
所謂斷點(diǎn)調(diào)試就是檢測(cè)執(zhí)行路徑和數(shù)據(jù)是否正確,中斷游戲運(yùn)行在線調(diào)試,下面這篇文章主要給大家介紹了關(guān)于C#中利用斷點(diǎn)操作調(diào)試程序的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12