c# - C#中如何对 float 进行四舍五入

标签 c# string optimization rounding

我想获取数字,其中.ToString()转换总长度<= 7。例如

 1. 1.23456789     - > 1.23457 
 2. 12345.789      - > 12345.8
 3. 123456789.1234 - > 1.235E8
 4. 0.00001234 - > 1.23E-8

我想使用非常快速的解决方案,因为需要处理大文件。

这段代码可以解决部分问题,但是不起作用

                    int power = (int)Math.Log10(f) + 1;
                    f = f / (float)Math.Pow(10, power);
                    f = (float)Math.Round(f, 5);
                    f = f * (float)Math.Pow(10, power);

例如 f = 7.174593E+10 四舍五入后,它变成 0.71746 (对我来说很好)

当我将它乘以10^11时,它变成7.17459948E+10

但我预计7.71746E+10

UPD。 结果我想得到字符串,而不是数字。

最佳答案

如果您想舍入以便稍后在计算中使用,请使用 Math.Round((decimal)myDouble, 3)。

如果您不打算在计算中使用它,但需要显示它,请使用 double.ToString("F3")。

关于c# - C#中如何对 float 进行四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974945/

相关文章:

c# - 使用 .NET Regex 进行泰米尔语全词搜索

c# - 如何通过 Interop (C#) 向 Word 文档添加结构化内容?

vb.net 字符串仅包含 4 位数字(或年份)

php - 用php替换大文件中的字符串

c++ - 压缩多个嵌套的 For 循环

c++ - 为什么我的快速排序对大于 ~35000 的数组不起作用? (C++)

c# - 仅存储过程中的一列

javascript - 如何隐藏谷歌组织结构图中所选元素的 HTML 类?

java - 简单的 Java 字符串

MySQL self-join with order by optimization