我一直在寻找,我就是找不到答案,没有一个能正常工作。
我想把像 0.33333333333 这样的 double 变成 0,33 或者 0.6666666666 变成 0,66
像 0.9999999999 这样的数字应该变成 1。
我尝试了各种方法,比如
value.ToString("##.##", System.Globalization.CultureInfo.InvariantCulture)
它只是返回垃圾或错误地舍入数字。 有什么帮助吗?
基本上每个数字都除以9,然后需要保留2位小数,不四舍五入。
我发现了一个很好的函数,似乎可以很好地处理高达 9.999999999 的数字 除此之外,它开始丢失一位小数。数字如 200.33333333333 它只会显示 200 而不是 200,33。对那些人有什么解决办法吗?
这里是:
string Truncate(double value, int precision)
{
string result = value.ToString();
int dot = result.IndexOf(',');
if (dot < 0)
{
return result;
}
int newLength = dot + precision + 1;
if (newLength == dot + 1)
{
newLength--;
}
if (newLength > result.Length)
{
newLength = result.Length;
}
return result.Substring(0, newLength);
}
最佳答案
你试过吗
Math.Round(0.33333333333, 2);
更新*
如果您不希望小数点四舍五入,您可以做的另一件事是将 double 更改为字符串,然后获取保留两位小数的子串并将其转换回 double 。
doubleString = double.toString();
if(doubleString.IndexOf(',') > -1)
{
doubleString = doubleString.Substring(0,doubleString.IndexOf(',')+3);
}
double = Convert.ToDouble(doubleString);
您可以使用 if 语句检查 .99 并将其更改为 1。
关于c# - 将逗号后的双位数格式化为两位数,不向上或向下舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153559/