Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 除非实际为100%,否则百分比不得为100%_C#_C# 4.0_String Formatting_Percentage - Fatal编程技术网

C# 除非实际为100%,否则百分比不得为100%

C# 除非实际为100%,否则百分比不得为100%,c#,c#-4.0,string-formatting,percentage,C#,C# 4.0,String Formatting,Percentage,在一个报表中,我们的客户机可以有超过100000个被检查的项目,并且在报表元数据(xml文件)中,我们希望有两个小数百分比的项目被“检查正常” 然而,这个数字不应该是100%,除非实际上一切正常。由于项目的数量,标准的数学运算和String.Format()可能会产生舍入错误 有一个优雅的解决方案吗 客户接受99.99%是一个特例,涵盖99.99999999%,尽管它在数学上是不正确的 重要的是,当存在未签出的项目时,报表数据不会显示100%。小助手方法有什么问题 public double G

在一个报表中,我们的客户机可以有超过100000个被检查的项目,并且在报表元数据(xml文件)中,我们希望有两个小数百分比的项目被“检查正常”

然而,这个数字不应该是100%,除非实际上一切正常。由于项目的数量,标准的数学运算和String.Format()可能会产生舍入错误

有一个优雅的解决方案吗

客户接受99.99%是一个特例,涵盖99.99999999%,尽管它在数学上是不正确的


重要的是,当存在未签出的项目时,报表数据不会显示100%。

小助手方法有什么问题

public double GetPercentage(int checkedOk, int total)
{
    if (checkedOk == total)
        return 100.0;

     var percentage = (100.0 * checkedOk) / total;
     return percentage > 99.99 ? 99.99: percentage;
}

我想去掉“99.99”这个神奇数字,但你明白了。

我的想法是通过完成的项目+通过,而不是通过百分比,所以如果!=那么它永远不会是100。。如果你没有看到任何代码示例,如果你使用double作为数字,那么就改用decimal(这不是浮点数类型)@Hypnobrew:
decimal
仍然是浮点数类型。这只是一个十进制浮点类型,而不是二进制浮点类型。这个问题最好在用户体验堆栈交换中解决。我想问的是:如果大多数项目都可以,那么百分比在任何方面首先有用吗?说“7项未签出”是否更有意义?是的,报告错误或各自的计数更有意义。然而,它是报告中的报告执行摘要类型的东西。在xml中,双精度/十进制百分比作为预格式化字符串传递是愚蠢的。否则,我可以推卸责任。