首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigFloat计算在不同的机器上产生不同的结果

BigFloat计算在不同的机器上产生不同的结果
EN

Stack Overflow用户
提问于 2020-09-20 22:35:54
回答 1查看 32关注 0票数 0

我在我的项目中使用了第三方库来获取BigFloat值(我使用了https://github.com/Osinko/BigFloathttps://www.nuget.org/packages/BigFloat这两个库)。我在我的机器上得到的结果是想要的结果;但是,当我在其他机器上运行应用程序(我在3台不同的机器上测试)时,应用程序给出了不同的结果(这三台机器都给出了相同的数字,这与我在机器上得到的值不同,并且不是我的应用程序可以接受的值)。我研究了关于浮点计算在不同机器上的不同结果的不同帖子,但在所有三台机器上产生的结果是相同的。所以,我想知道我是不是错过了什么。或者,我如何解决这个问题?

执行计算的函数部分是(thisItemCount、count_system、userDuration、repairTime、MTBFValue和workingRate值是双精度值,这是我通过表单从用户输入中获得的):

代码语言:javascript
复制
// Calculate the effective total failure rate

            double FailureRate = (thisItemCount * Count_system * useDuration * repairTime) /
                                 (MTBFvalue / workingRate);
            //FailureRate = Math.Round(FailureRate, 8, MidpointRounding.AwayFromZero);

            // Calculate the required number of spares

            int n = 0;
            BigFloat failureProbability = 0;
            BigFloat adequacy = 0;
            for (int j = 0; j < 150; j++)
            {
                try
                {
                    BigFloat power = BigFloat.Pow(FailureRate, n);
                    failureProbability = power / Factorial(n);
                    adequacy += failureProbability;
                    BigFloat Exp = (BigFloat)(Math.Exp(-FailureRate));
                    BigFloat FA = Exp * adequacy;
                    double Level = _spareAvailability / 100;
                    BigFloat AvailabilityLevel = new BigFloat(Level);
                    if (FA >= AvailabilityLevel)
                    {
                        Console.WriteLine("Break");
                        break;
                    }
                    n++;
                }

                catch (Exception ex)
                {
                    Console.WriteLine("Didn't calculate this row");
                    Console.WriteLine(ex);
                }
            }

            result.Text = n.ToString();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-20 23:04:12

这可能是这些机器的文化使然。

在源代码中显式区域性,然后重试。

代码语言:javascript
复制
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US"); // your culture
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63980081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档