删除双精度类型的最后一个十进制值
本文关键字:十进制 最后一个 双精度 类型 删除 | 更新日期: 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);