簡體   English   中英

刪除雙精度的最后一個十進制值

[英]Delete last decimal value in a double

我正在用C#制作計算器。 我將來自用戶的輸入保存為雙精度。

我使用以下代碼刪除帶小數點的雙精度數字中最后輸入的數字。

i = (i - (i % 10)) / 10;

這將刪除最后一個數字。

12345將變成1234


我無法確定的是如何使十進制值發生這種情況。

2134.765必須成為2134.76

我的程序使用var來查看是否已插入點,因此我只需要數學運算即可刪除最后一個數字。

由於您正在處理字符輸入而不是數學運算 ,因此只需將輸入保留為字符串, 直到需要對其進行操作即可 然后刪除最后一個字符就像

input = input.Substring(0,input.Length-1);

否則,您必須處理模棱兩可的情況,例如:

  • 如果最后一個字符是小數點怎么辦?
  • 如果輸入了一個或多個尾隨零,該怎么辦?
  • 是否輸入了小數點(您說您已經對此進行了跟蹤)

最簡單的方法可能是使用您自己的數字格式-無論如何您都希望將值保留為十進制。 double是一個糟糕的選擇。 至少要使用decimal以便保證數字的小數點表示。

如果您真的總是只想刪除數字中的最后一位,我會用把戲並將數字轉換為字符串,然后刪除最后一個字符並返回。

var number = 123,456;
var strNumber = number;
strNumber.Remove(strNumber.Length - 1);
number = double.parse(strNumber);

暫無
暫無

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

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