是现实思路

1,先小数点补位,8913758923475893274958738945793845-4893127498372459823745324532453245.284929384729837498237492 => 8913758923475893274958738945793845.000000000000000000000000-4893127498372459823745324532453245.284929384729837498237492.

2,进行计算,最后补符号

        public static void BuweiF(ref string a, ref string b)
{
int al = a.Length;
int bl = b.Length;
string[] c = a.Split('.');
string[] d = b.Split('.');
int i = al - c[].Length;
int j = bl - d[].Length;
if (i != && j != )
{
if (i > j)
{
while (i != j)
{
b += "";
j++;
}
}
else
{
while (i != j)
{
a += "";
i++;
}
}
}
else if (i != && j == )
{
b += ".";
j++;
while (i != j)
{
b += "";
j++;
}
}
else if (i == && j != )
{
a += ".";
i++;
while (i != j)
{
a += "";
i++;
}
}
//Console.WriteLine(a);
// Console.WriteLine(b);
}
public static char[] Diff(string a, string b)
{
BuweiF(ref a, ref b);
List<char> item = new List<char>();
int al = a.Length;
int bl = b.Length;
int r = ;
int jw = ;//退位
bool fushu = false;
if (al > bl)
{
do
{
if (al > && bl > )
{
if (a[al - ] == '.')
{
r = '.';
}
else
{
r = (int)a[al - ] - (int)b[bl - ] - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
}
}
else if (al > && bl <= )
{
r = a[al - ] - - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
} if (r == )
{
item.Add(Convert.ToChar(r));
}
else
{
item.Add(Convert.ToChar(r.ToString()));
}
al--; bl--;
} while (al > || bl > );
}
else if (al < bl)
{
fushu = true;
do
{
if (al > && bl > )
{
if (b[bl - ] == '.')
{
r = '.';
}
else
{
r = (int)b[bl - ] - (int)a[al - ] - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
}
}
else if (bl > && al <= )
{
r = b[bl - ] - - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
} if (r == )
{
item.Add(Convert.ToChar(r));
}
else
{
item.Add(Convert.ToChar(r.ToString()));
}
al--; bl--;
} while (al > || bl > );
}
else
{
if (a[] > b[])
{
do
{
if (al > && bl > )
{
if (a[al - ] == '.')
{
r = '.';
}
else
{
r = (int)a[al - ] - (int)b[bl - ] - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
}
}
else if (al > && bl <= )
{
r = a[al - ] - - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
} if (r == )
{
item.Add(Convert.ToChar(r));
}
else
{
item.Add(Convert.ToChar(r.ToString()));
}
al--; bl--;
} while (al > || bl > );
}
else
{
fushu = true;
do
{
if (al > && bl > )
{
if (b[bl - ] == '.')
{
r = '.';
}
else
{
r = (int)b[bl - ] - (int)a[al - ] - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
}
}
else if (bl > && al <= )
{
r = b[bl - ] - - jw;
jw = ;
if (r < )
{
r = + r;
jw++;
}
} if (r == )
{
item.Add(Convert.ToChar(r));
}
else
{
item.Add(Convert.ToChar(r.ToString()));
}
al--; bl--;
} while (al > || bl > );
}
}
if (item[item.Count() - ] == '' && item[item.Count() - ] != '.')
{
item.RemoveAt(item.Count() - );
}
if (fushu)
{
item.Add('-');
}
return item.ToArray(); }

C# 高精度减法 支持小数(待优化)的更多相关文章

  1. C# 高精度加法 支持小数(待优化)

    直接上代码 实现思路: 1.首先小数点补 位,9223372036854775808.9+9223372036854775808.9223372036854775808 => 922337203 ...

  2. C# 高精度乘法 支持小数(待优化)

    将N*N乘法转化为(N*n1)+(N*n2)....(N*nn) 乘完后在补充小数点 public static char[] Quadrature(string a, string b) { ] { ...

  3. 高精度减法--C++

    高精度减法--C++ 仿照竖式减法,先对其,再对应位相减. 算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符. #include <iostream> #includ ...

  4. HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛

    题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...

  5. js函数验证方式:验证是否是数字,支持小数,负数

    验证 datatype="/^\d+(\.\d+)?$/" validatform验证是否是数字 支持小数点 datatype="d" 貌似支持小数 js函数验 ...

  6. vultr VPS的购买及搭建ss介绍,支持锐速加速优化

    Vultr虽然成立时间不久,但是其背景实力还是比较雄厚的,基于全球最大的游戏服务器提供商之一的基础,所以才有实力开设这么多的数据中心.有速度较好的日本东京.洛杉矶等机房,也有我们很多人需要的欧洲机房等 ...

  7. 【洛谷P2142 高精度减法】

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 复制 2 1 输出样例#1: 复制 1 说明 ...

  8. 【洛谷p2142】高精度减法

    高精度减法第一遍没有过 高精度减法[传送门] 洛谷算法标签: 总之技术都在高精上了吧. 附代码: #include<iostream> #include<cstdio> #in ...

  9. P2412高精度减法

    传送门 因为忘了带书回家,所以因为这道题我卡了半小时所以写篇博客“纪念”下 高精度减法中,如果被减数比减数小,就要用减数减去被减数.接下来的判断就是本题的核心.直接用strcmp是不行的,例如100与 ...

随机推荐

  1. tomcat+JNDI+spring 的配置问题

    在做spring有关的项目时,往往需要配置数据源,当然配置的方式有很多种,可以单独写在一个properties文件中,这样修改数据源配置的话比较容易,也比较简单,下面介绍另外一种数据源的配置 利用jn ...

  2. xcode6.4 7.2下载地址

    XCode 7.2 :ht tp://adcdownload.apple.com/Developer_Tools/Xcode_7.2/Xcode_7.2.dmgXCode7.1.1:ht tp://a ...

  3. 【11】在operator=中处理“自我赋值”

    1.自我赋值,看起来愚蠢,但是却合法.有些自我赋值一眼就可看出来.有些自我赋值是潜在的.比如:a[i] = a[j]; *px = *py; 甚至不同类型的指针,都指向同一个地址,也是自我赋值,这一类 ...

  4. HT518V311

    HT518V311.rar

  5. win7(64bit)python相关环境模块搭建

    包括Python,eclipse,jdk,pydev,pip,setuptools,beautifulsoup,pyyaml,nltk,mysqldb的下载安装配置. **************** ...

  6. debian配置简单的vsftp服务器

    Ubuntu Linux与Windows系统不同,Ubuntu Linux不会产生无用垃圾文件,但是在升级缓存中,Ubuntu Linux不会自动删除这些文件,今天就来说说这些垃圾文件清理方法.  1 ...

  7. Java_生产者消费者模式

    /* * To change this license header, choose License Headers in Project Properties. * To change this t ...

  8. JS类型(1)_JS学习笔记(2016.10.02)

    js类型 js中的数据类型有undefined,boolean,number,string,null,object等6种,前5种为原始类型(基本类型),基本类型的访问是按值访问的,就是说你可以操作保存 ...

  9. angualrjs学习总结三(http、select、表格、指令以及事件)

    一:http XMLHttpRequest:$http是angularjs的一个核心服务,用于读取远程服务器的数据.$http.get(url) 是用于读取服务器数据的函数.举例:<div ng ...

  10. oracle学习总结1

    1:解锁用户alter user 用户名 account unlock; 2:获取系统时间.随机数select sysdate, sys_guid() from dual; 3:起别名,使可读性更强, ...