0

我有这个号码:1234.5678(作为文本)

我需要这个数字加倍,点后只有 2 个数字

但没有四舍五入

在 1234.5678 - 我得到 1234.57

在 12.899999 - 我得到 12.90

我该怎么做?

4

7 回答 7

5

你应该能够像这样得到你想要的:

number.ToString("#0.00")
于 2009-05-29T22:29:11.857 回答
3

乘以 100,取数字的 floor(),再除以 100。

于 2009-05-29T22:27:25.857 回答
3

你没有发布你想要的结果,但我假设你想要截断,所以你会看到 1234.56 和 12.89。尝试:

decimal d = 1234.89999M;
Console.WriteLine(Math.Truncate(d * 100) / 100);
于 2009-05-29T23:54:30.767 回答
1

拿这个浮点运算!

var num = "1234.5678";
var ans = String.Empty;
if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment
{
  ans = num.Substring(0, num.IndexOf('.') + 3);
}
于 2009-05-29T23:00:45.040 回答
1

这是因为您不能将这些数字完全表示为双精度数,因此转换、四舍五入然后重新打印为文本会导致精度损失。

请改用“十进制”。

于 2009-05-29T22:27:32.190 回答
1

这应该可以解决问题。

string rawVal = "1234.5678";
System.Math.Floor((double.parse(rawVal)) * 100) / 100;
于 2009-05-30T00:00:29.803 回答
-1

这不行吗?

        double d = 1234.5678;
        double rounded =Math.Round(d, 2);
于 2009-05-29T22:30:53.803 回答