1

如何阅读没有任何符号的数字?例如 -8759.328 和 8569.659"

输出应该是双倍的 8759.32 和 8569.65

 var debit = txtDebit.Text.Split('-');
 oBankPages.DebitAmount = Convert.ToDouble(debit);
4

6 回答 6

2

如果我理解,你有两个字符串,

var numberStringOne = "-8759.328";
var numberStringTwo = "8569.659";

如果你想像decimals 一样对待这些字符串,首先你必须解析它们。

var numberOne = decimal.Parse("-8759.328");
var numberTwo = decimal.Parse("8569.659");

接下来,您可以通过使用Abs来获得忽略符号的值。Math.Abs是Absolute的缩写。

var numberOne = Math.Abs(numberOne);

然后使用适当的格式说明符将数字转换回四舍五入的字符串。

var formattedNumberOne = numberOne.ToString("D2");

也许

Console.WriteLine("{0:D2}", numberTwo);

所以,都在一条线上。

var formattedNumberOne = Math.Abs(decimal.Parse("-8759.328")).ToString("D2");
于 2013-10-21T09:14:13.750 回答
1

格式化只能使用字符串整数和浮点类型自己没有任何格式化

var res = Math.Abs(-8759.328).ToString("f2");

如果你完全需要结果,Double你可以Round得到结果

var res = Math.Round(Math.Abs(-8759.328), 2);

注意:以上调用Math.Round,因此结果将被四舍五入而不是格式化。换句话说,您可能会得到结果8759.33而不是8759.32

于 2013-10-21T08:11:56.243 回答
0

请注意,像这样的分数不能用浮点数准确表示。您可以在您的情况下简单地解决它。

double value = Math.Truncate(100 * Math.Abs(-8759.328)) / 100;

输出:8759.32

于 2013-10-21T08:56:24.890 回答
0

Try this.

string debit = Regex.Replace(txtDebit.Text, "[^0-9^.]+", "");
oBankPages.DebitAmount = Math.Abs(Convert.ToDouble(debit)).ToString("f");
于 2013-10-21T08:34:05.057 回答
0
 oBankPages.DebitAmount = Math.Abs(Convert.ToDouble(txtDebit.Text));
于 2013-10-21T08:14:14.270 回答
0

使用decimal而不是双倍。您的数据与金钱有关。即使是一分钱的折扣也很重要。您不能使用浮点数或双精度数,因为它们是有损数据类型,只会记住数字的“开头”而忘记结尾。decimal被设计成精确的。如果您曾经在金融部门工作,请记住:没有浮动,没有双打。当然,除非一些高级会计命令告诉你他们以某种方式升级它并且由于他们的创造力是安全的。

阅读有关意大利腊肠攻击的信息

于 2013-10-21T09:08:11.803 回答