1/7精确到100位,1000位,100000位怎么算? |
您所在的位置:网站首页 › 精确到百万位怎么算 › 1/7精确到100位,1000位,100000位怎么算? |
双精度
Console.WriteLine("1/7的值是" + (double)1 / 7);
结果:0.14285714285714285 即使使用双精度浮点数,精确的位数也是有限的,如果想精确到小数点后100位,1000位,甚至更高哪? 朴素的除法除数 余数 商,利用这三者的关系,可以无限度的计算下去。当然这个不能超过计算机的内存限制。 商=除数/被除数 余数 = 除数%被除数 迭代: 商 = (余数10)/被除数 余数 = (余数10)% 被除数 这就是小学数学的除法规则。基于此规则就可以不断迭代,提高精度,本文使用c#的long类型存储。用一个列表存储long。 代码实现long的最大值是9223372036854775807 ,存在overflow的问题,因此 ,解决方案可以参见代码: //计算1/7 除数 被除数 List irrationalNumber(int divisor, int dividend) { List longList = new List(); long final_result = 0; int result = 0; int remainder = 0; result = (int)divisor / dividend; remainder = (int)divisor% dividend; final_result += result; long tmp_result = 0; //这里以100为例 while (longList.Count longList.Add(tmp_result); tmp_result = 0; final_result = 0; remainder = (int)divisor / 10; continue; } } return longList; } var result =irrationalNumber(1,7); Console.Write("0."); foreach (long item in result) { Console.Write(item); }运行结果: 最终结果: 用这种方法,也可以求出Π比较高的精度。计算Π有很多方法,比如无穷级数方法,蒙特卡罗方法等 更多内容,欢迎关注我的微信公众号:半夏之夜的无情剑客。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |