簡體   English   中英

VB.Net -“console.write(Format((87.20 \ 43.60)))”返回的結果是 1 而不是 2,為什么?

[英]VB.Net -" console.write(Format((87.20 \ 43.60))) " returning result of 1 not 2, why?

由於我無法理解的原因,下面的代碼行返回為 1 而不是 2。

console.write(格式((87.20 \ 43.60)))

當然這應該返回 2 的結果,但我已經在另一個環境中檢查過並且它返回了一個誰能告訴我為什么?

我試過將代碼放入第二個環境,但結果是一樣的我不明白為什么它返回 1 而不是 2,誰能啟發我?

感謝您的幫助,但找到了答案。

小數在 Integer 除法之前轉換為 Long,因此需要進行銀行四舍五入,在操作解決問題之前將兩個數字都乘以 100。

信息來源:

學微軟-VB.Net-\運算符-備注

謝謝,

雖然很高興您解決了自己的問題,但我確實想提供一個替代方案。

當您使用 integer 除法運算符時,您無法控制舍入的發生方式。 而如果您執行浮點除法運算符,則可以保持精度,然后使用內置的 Math class 方法之一( 文檔)指定數字的舍入方式。

看看這個例子:

Dim result = 87.20 / 43.60
Dim roundUp = Math.Ceiling(result)
Dim roundDown = Math.Floor(result)
Dim bankersRounding = Math.Round(result)

小提琴: https://do.netfiddle.net/LZEMXV

因為在您的示例中您使用的是Console.Write (它將數據視為字符串),所以您不需要將值轉換為 Integer 數據類型。 但是,如果您需要 Integer 的值,則可以使用 Parse 方法(文檔)將result之外的任何一個變量安全地轉換為 Integer。

暫無
暫無

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

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