电脑自带的计算器(科学型)的精度为什么能那么高? RT,讨论下,希望知道的指定一二。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 举个例子:123.456789*234.567891=(123456789/1000000)*(234567891/1000000)=(123456789*234567891)/(1000000*1000000)123.456789/234.567891=123.456789*(1/234.567891)=(123456789/1000000)*(1/(234567891/1000000))=(123456789/1000000)*(1000000/234567891)=(123456789*1000000)/(1000000*234567891)当然,整型数也不是说直接用int之类的,会越界的,自己实现大数类。 To:iamshuke不知道是我没明白你的意思,还是你没明白我的意思 浮点数是近似表达数值的,精度不可能高,像double类型的,也就小数点前后共15位左右吧。要想实现高精度计算,使用浮点数(double,float)是不可能实现的。可以使用整型数字模拟浮点数字,或者干脆就用BYTE数组表达,每个BYTE表达一个十进制数。至于实现加减乘除,最简单的方法就是小学学过的“列式子”法,按十进制位逐个去计算就行了。 恩,加减这样计算还稍微能理解点,乘除好处理么?double,float之类的,说精度是多少位,但是它们好像是二进制下的位数,换算成10进制,也没多少位了 乘除也很好处理,和列式子求乘、除的过程一样就行了,基本上都是按十进制位操作,处理好进位。不过要是想实现三角函数、n次方(n可大于0也可小于0)、log之类的就麻烦了。 不过Windows计算器确实很牛,比如1/3=0.33333333333333333333333333333333,再*3还会得1,而不是0.999999999999999999999999999999。如果键入0.33333333333333333333333333333333*3,结果就不是1,是0.999999999999999999999999999999。估计最多有1/10000的程序员能实现Windows计算器的全部功能,我不包括在内 :) 我用VB编制的超高精度科学计算器,精度可达1024位,包含常用数学函数,不需安装,很方便的。有需要的通知我:[email protected] VC6.0怎样做导航图钉窗口 线程核心对象是什么? Debug模式正常,Release版本运行时候,按钮图标显示不出来,是什么原因? 请问如何判断字符串中含有非ASC吗字符????? 线程的疑惑(1) 未出现提示框 声音存储问题,请帮忙! 这样就算c++高手了 大家好,问你个比较菜的问题,在VC中函数前的afx是什么意思? 如何知道SOCKET缓冲区已有多少字节的数据? VS界面设计 用OpenGL显示中文
123.456789*234.567891
=(123456789/1000000)*(234567891/1000000)
=(123456789*234567891)/(1000000*1000000)
123.456789/234.567891
=123.456789*(1/234.567891)
=(123456789/1000000)*(1/(234567891/1000000))
=(123456789/1000000)*(1000000/234567891)
=(123456789*1000000)/(1000000*234567891)当然,整型数也不是说直接用int之类的,会越界的,自己实现大数类。
不知道是我没明白你的意思,还是你没明白我的意思
浮点数是近似表达数值的,精度不可能高,像double类型的,也就小数点前后共15位左右吧。
要想实现高精度计算,使用浮点数(double,float)是不可能实现的。可以使用整型数字模拟浮点数字,或者干脆就用BYTE数组表达,每个BYTE表达一个十进制数。至于实现加减乘除,最简单的方法就是小学学过的“列式子”法,按十进制位逐个去计算就行了。
double,float之类的,说精度是多少位,但是它们好像是二进制下的位数,换算成10进制,也没多少位了
有需要的通知我:[email protected]