首页 新闻 会员 周边

C#怎么保存几百位或者几千位的小数

0
悬赏园豆:50 [待解决问题]

例如:

我要计算0.001*0.002*0.003*。。。。。。*1.464这1464个小数的值,并把其计算结果用一个变量保存起来。应该怎么样去保存呢?其中要计算的小数没有规律,上面的0.001到1.464是假设的。我的原始目标是要计算1464个含3位小数位数的小数的几何标准差,所以我要先计算1464个小数的几何平均值

问题补充:

我要问的是怎么去保存计算后得到的多位小数的结果,不是问怎么去计算。或者是怎么把这个结果换成另外一种可以不失精度的形式

大家有几何标准差的简易算法吗?

guosongORxiaosong的主页 guosongORxiaosong | 初学一级 | 园豆:102
提问于:2012-10-30 11:02
< >
分享
所有回答(9)
0

定义decimal类型的变量:

参考:http://msdn.microsoft.com/zh-cn/library/364x0z75%28v=vs.100%29.aspx

oppoic | 园豆:770 (小虾三级) | 2012-10-30 11:12

估计这个也帮不上你忙啊

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-10-30 11:15

@chenping2008: 楼主可以直接百度的,百度貌似有计算器的功能

支持(0) 反对(0) oppoic | 园豆:770 (小虾三级) | 2012-10-30 11:32

decimal不行的,取值范围还不如double类型,当小数位数太多的时候更没法保存。
百度的计算器和这个问题关系不大吧,我要的是在Silverlight的项目中有一个变量去接收保存计算结果。

支持(0) 反对(0) guosongORxiaosong | 园豆:102 (初学一级) | 2012-10-30 11:51
0

转换为整数来计就可以了.使用long应该够.

zhangweiwen | 园豆:904 (小虾三级) | 2012-10-30 11:57

全部转换成整数后相乘的结果也很大,会long类型的范围

支持(0) 反对(0) guosongORxiaosong | 园豆:102 (初学一级) | 2012-10-30 14:21
0

楼主,sqr(x1*x2*x3*……*xn,n)=sqr(x1,n)*sqr(x2,n)*……sqr(xn,n)是吧

sinhbv | 园豆:2579 (老鸟四级) | 2012-10-30 15:36

标准差:http://baike.baidu.com/view/1024670.htm
算术平均值:http://baike.baidu.com/view/415917.htm
几何平均值:http://baike.baidu.com/view/306432.htm
算术标准差就是循环每一项分别减去算术平均值
几何标准差就是循环每一项分别减去几何平均值

支持(0) 反对(0) guosongORxiaosong | 园豆:102 (初学一级) | 2012-10-30 15:42
0

我只能说的看你最后结果想要的精度了,两个带三位小数的数相乘,并不是每个都是你想要的。。

当达到某一标准时可以先记录,后面再做处理

当符合你的要求时,也没必要把小数位全留着

这是我的思路了。。

East神奇 | 园豆:21 (初学一级) | 2012-10-30 16:48
0

object

panmin | 园豆:268 (菜鸟二级) | 2012-11-02 16:17
0

这个问题,需要从算法上考虑

W e i | 园豆:25 (初学一级) | 2012-11-04 17:29
0

你说的问题类似“大数相加”这一类的问题,其实解决之就是自己写个对应的处理算法。算法的思想就是把要操作的数当成字符串处理,按对应的数学规则逐位操作,最后结果也用字符串保存,这样就可以解决!

乘风直上 | 园豆:233 (菜鸟二级) | 2012-11-07 12:59
0

用string类型,写一个BigNumber类去保存计算结果。其中要简化几何平均值和几何标准差的算法。

guosongORxiaosong | 园豆:102 (初学一级) | 2012-11-14 15:34
0

把小数位变成整数位:即如何有个数是3.1415987674895749579580574094............

你可以先乘以一个10000000000000000000000000000000000000000000的数,计算完后将每位数以单个数输出

比如:

10^6    10^5   10^4  10^3  10^2 10^1  10^0  10^-1  10^-2  ......

1            4          6         4       4       6        3        5         3  .....

这样,即是有1000多位应该也是可以解决的。

ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-12-12 11:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册