任意两整数相除 保留小数点后10000位
2009-11-07 05:57
281 查看
思路:先给被除数扩大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();
}
}
}
不过,程序中不能储存这么大的数,所以只能将数字字符串化,采用模拟手算的方法计算.
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();
}
}
}
相关文章推荐
- Java进阶(五十二)两个整数相除得到小数点并保留两位小数的方法
- java中两个整数相除得到小数点并保留两位小数的方法
- java中两个整数相除得到小数点并保留两位小数的方法
- java中两个整数相除得到小数点并保留两位小数的方法
- 【小知识点总结】java中两个整数相除得到小数点并保留两位小数的方法
- 数值千分位显示,若为小数,保留两位小数,若为整数,小数点后默认为00
- Java两整数相除保留两位小数
- js验证整数加保留小数点
- java实现两个整数相除保留一位小数
- 79、Java 两个整数相除保留两位小数,将小数转化为百分数
- java中double类型如果小数点后为零显示整数,否则保留
- 用牛顿迭代法求根号2及sqrt(任意数),连续求解,保留小数点后16位
- Java两个整数相除,保留N位小数
- C++保留任意小数点后位数与格式化输出
- java实现两个整数相除保留一位小数
- 两个object类型相除,并保留小数点后两位
- sql server2000中的两个整数相除保留十位小数
- Java 两个整数相除保留两位小数,将小数转化为百分数
- Java 两个整数相除保留两位小数,将小数转化为百分数
- java 两个整数相除保留两位小数