我有这个号码:1234.5678(作为文本)
我需要这个数字加倍,点后只有 2 个数字
但没有四舍五入
在 1234.5678 - 我得到 1234.57
在 12.899999 - 我得到 12.90
我该怎么做?
你应该能够像这样得到你想要的:
number.ToString("#0.00")
乘以 100,取数字的 floor(),再除以 100。
你没有发布你想要的结果,但我假设你想要截断,所以你会看到 1234.56 和 12.89。尝试:
decimal d = 1234.89999M;
Console.WriteLine(Math.Truncate(d * 100) / 100);
拿这个浮点运算!
var num = "1234.5678";
var ans = String.Empty;
if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment
{
ans = num.Substring(0, num.IndexOf('.') + 3);
}
这是因为您不能将这些数字完全表示为双精度数,因此转换、四舍五入然后重新打印为文本会导致精度损失。
请改用“十进制”。
这应该可以解决问题。
string rawVal = "1234.5678";
System.Math.Floor((double.parse(rawVal)) * 100) / 100;
这不行吗?
double d = 1234.5678;
double rounded =Math.Round(d, 2);