簡體   English   中英

我如何在C#中對ulong施加負雙?

[英]How can I cast negative double to ulong in C#?

我在C ++中找到了一個uint x=(uint)k * 100;的代碼片段uint x=(uint)k * 100; 其中k為正數或負數的浮點數。 而且我必須在C#中實現此代碼。 我將此代碼編寫為ulong x = Convert.ToUInt64(k * 100)在這種情況下,k是正或負雙精度。 因此,當k為正數時,代碼有效,但如果k為負,則產生錯誤。 但是我完全可以肯定C ++是正確的。 如何在C#中做到這一點?

uintulong 未簽名 這意味着它們可以采用從0開始的值。它們不能采用負值。 因此,當您編寫Convert.ToUInt64(negative_double)它將執行以下操作:

mscorlib.dll中發生了'System.OverflowException'類型的未處理異常。其他信息:算術運算導致溢出。

如果仍要執行此分配,則可以執行與c++

ulong x = (ulong)k * 100;

我不知道,我確切地期望返回什么C ++解決方案。

它將為您提供相同的c++結果。

由於將負值轉換為無符號的UInt64是錯誤的,因此您必須轉換為有符號的Int64,然后將其轉換為UInt64,您需要獲得與C ++相同的結果;

var result = (UInt64)Convert.ToInt64 (k * 100); 

您不能直接將雙精度型轉換為無符號長型,而首先必須轉換為長型。 所以試試這個:

ulong x = (ulong)(long)k * 100;

https://msdn.microsoft.com/zh-CN/library/d3d6fhea%28v=vs.120%29.aspx

暫無
暫無

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

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