任意两整数相除 保留小数点后10000位

思路:先给被除数扩大10^10000倍,然后从后向前截取10000位 即为结果的小数部分。

 

不过,程序中不能储存这么大的数,所以只能将数字字符串化,采用模拟手算的方法计算.

 

 

using System;

using System.Collections.Generic;

using System.Text;

namespace Calc2

{

    class Calc

    {

        /// <summary>

        ///  KINGLO

 

        /// </summary>

        /// <param name="num1"></param>

        /// <param name="num2"></param>

        public void Calcer(int num1, int num2)

        {

            //取被除数位数

            int num1Len = num1.ToString().Length;

            //取除数位数

            int num2Len = num2.ToString().Length;

            //结果

            String res = "";

            //两数相除的整数部分

            int portNum = num1 / num2;

            ///

            ///以下过程模拟手动除法过程

            ///

            //生成临时除数字符串

            String tempStr = "";

            //控制输入小数点变量

            int x = 0;

            for (int i = 0; i < num1Len+10000; i++)

            {

                int n = 0;

                if (num1Len > i)

                {

                    tempStr += num1.ToString().ToCharArray()[i];

                }

                else

                {

                    tempStr += "0";

                }

                int tempNum = int.Parse(tempStr);

                int tempPort = tempNum / num2;

                if (tempPort != 0)

                {

                    tempStr = (int.Parse(tempStr) - tempPort * num2) + "";

                    x++;//记录商大于次数,当x=1时则是第一次商大于,此时输出小数点

                }

                if (x == 1)

                {

                    res+= '.';

                }

                //保存每次计算结果

                res += tempPort.ToString();

            }

            ///输出结果

                Console.Write("结果:"+res);

           

            Console.ReadLine();

        }

    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值