簡體   English   中英

C#將“ double”轉換為“ ushort”

[英]C# convert “double” to “ushort”

我堅持使用變量格式。 我知道這是一個愚蠢的問題,但是我已經處理了兩個小時,但我卻迷失了方向。

問題是:

我有:

command.Data = new ushort[] { xx, yy, zz };

我需要做的是:

ushort zz = System.Math.Tan(c1AngleX);

但是System.Math.Tan的輸出是“ double”,所以我有點兒沒有“ ushort”。

我試過了

ushort zz = (Convert.ToUInt16 (System.Math.Tan(c1AngleX));

但這行不通。 (無法將“ double”轉換為“ string”)

有什么方法可以將“ double”轉換為“ ushort”?

(如果這個問題太“瑣碎”了,我感到抱歉,但我真的被困住了)

ushort是16位變量,可以容納0到65535之間的整個值。double是8字節變量,可以容納..許多值,包括小數。

因此,如果將double轉換為ushort,則可能會丟失數據。 這就是為什么系統在沒有明確指示的情況下不允許您這樣做的原因。

最簡單的投射方式是使用投射運算符:例如

double d = 99.99;
ushort u = (ushort)d;

或者,您也可以使用其中一個數學函數來顯式舍入或截斷double值,但是將其返回double值,因此您仍然必須進行強制轉換。

您應該考慮為什么要先將double值放入ushort類型。 設計正確的行為比將圓形釘子擠入方形擱架要重要得多,因為您可以這樣做。

您似乎遇到的問題是,從浮點類型轉換為整數類型會丟失小數點。

如果您對值0.111333423轉換(假設是Tan的結果),則zz的值將為0因為將刪除所有小數。 而且,由於ushort也是未簽名的,因此也不會轉移任何符號。

例如,有幾種方法可以處理稱為定點整數的整數類型的小數。 但這是假設您出於任何原因確實需要使用ushort(或與此相關的任何整數類型)。 對於此類函數,應避免由於數據丟失而導致整數類型。

暫無
暫無

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

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