将浮动限制为4位小数

时间:2015-03-12 21:03:30

标签: c#

这就是我想要实现的目标:

如果一个浮点数超过4个小数位,则只保留到前4个12位(不要舍入。)

例如:111.3547698 - > 111.3547

如果浮点数小于4,则保持不变

我遇到了这个命令:

float example = 111.3547698;

((Math.Truncate(Example * 1000)) / 1000)

但我不想回合。根据上面发布的命令,111.3547698 - > 111.354

但我需要留下来:111.3547

2 个答案:

答案 0 :(得分:4)

强制进行此类截断的一种方法是减去少量数据,以便Math.Round按需运行。

Math.Round(111.3547698 - 0.00005, 4)

相当于

Math.Round(111.3547198, 4)

它确实为您提供了所需的111.3547。

一般情况是

Math.Round(num - 0.5/(Math.Pow(10, digits)), digits)

数字> 0

有关类似的问题/答案,请参阅https://codereview.stackexchange.com/questions/51951/truncate-decimal-places

答案 1 :(得分:0)

您的代码甚至无法在C#的最后一次编译中编译。

它说:

  

double类型的文字不能隐式转换为'float'类型;   使用'F'后缀来创建此类型的文字

这意味着您应该阅读C#中的literals

您可能从here复制的这段代码具有文字m,对编译器说这个数字将为decimal。如果您希望使用float同样的代码安静并截断4位数,则应使用f字面值并按如下方式编写:

float ex = 111.3547698f;
var ex4 = (Math.Truncate(ex * 10000f)) / 10000f;