c# - 将逗号后的双位数格式化为两位数,不向上或向下舍入

标签 c# formatting decimal rounding

我一直在寻找,我就是找不到答案,没有一个能正常工作。

我想把像 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/

相关文章:

c# - 快速多线程问题

Excel:将单元格的颜色设置为另一个

c# - 解析后十进制不显示组(千)分隔符

c# - 我想根据 View 页面中的下拉列表选择禁用或隐藏一两个文本框

c# - Android Unity3d 限制 streamingAssetsPath 只有启动方法(更新设备/版本或设置?)

c# - 如何在 javascript 中找到父窗口的标题?

ios - NSNumberformatter 在尝试格式化匈牙利货币时显示 "HUF"而不是 "ft"

Python:将输入文件中行的最后一个单词 append 到输出文件行的末尾

c# - Decimal.Parse 抛出 FormatException

c++ - 比 float 或 double 更准确的数据类型? C++