2013-12-20 37 views
1

假設float f = 4.4如何將浮點數轉換爲整型而不丟失小數?就像它的記性所示

如果我在某些內存讀者瀏覽f,並假設fint我得到的值1082969293.

我不想將它轉換成int像(int)f

有沒有辦法假設f爲in​​t並在C#中獲取該值(1082969293)?

+1

當你說「與1151354611相似」時,你的意思實際上是「1082969293」嗎? –

+0

是的,Lee已經正確回答了,並且會在2分鐘內被接受。 –

回答

8
float f = 4.4f; 
var bytes = BitConverter.GetBytes(f); 
int i = BitConverter.ToInt32(bytes, 0); 
+1

一個更快的方法來做到這一點(失去解釋變量)將是'int i = BitConverter.ToInt32(BitConverter.GetBytes(f),0);'選擇哪一個對您和您的同事更具可讀性。 – Tory

+0

@Tory我認爲只有更快才能打字。我懷疑編譯器會優化這個變量。也就是說,我輕度更喜歡更簡潔的方式,因爲'var bytes'並沒有通過'GetBytes'傳遞任何附加信息。 –

+0

@TimGoodman Jitter可能會編譯它,但即使進行了優化,編譯器仍會生成本地變量並使用stloc。#和ldloc。#。但是,是的,這只是低級別的行爲。 – Tory