删除双精度类型的最后一个十进制值

本文关键字:十进制 最后一个 双精度 类型 删除 | 更新日期: 2023-09-27 18:14:03

我正在用c#制作一个计算器。我将用户输入保存为double类型。

我使用下面的代码来删除最后输入的不带小数的双精度数。

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);