[英]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.