浮点运算计算器错误(除0)

迭代法求平方根
syscall #输入浮点数
$f14,$f10 #if(f14&f10) set condition flag=1
bc1t label#if(condition flag==1)go end
mov.s $f12,$f8#输出$f8value
需要mips指导的可以在这里找我
http://item.taobao.com/item.htm?scm=.0&id=
mips指令简单入门
MIPS Architecture and Assembly Language Overview
MIPS架构及其汇编初步
(开始之前稍微再提下,整体分为4个结构:)
【MIPS编程】一个小计算器
mips汇编简单实例——一个小计算器http://see-see.appspot.com/?p=14001 其实开始的时候一直在看 mips的指令格式,看了、忘了,没什么效果。 现在通过这个例子,简...
mips汇编简单实例——一个小计算器
其实开始的时候一直在看 mips的指令格式,看了、忘了,没什么效果。
现在通过这个例子,简单训练一下: mips汇编中:
常用寄存器的使用;
系统调用: 1(print_int),4...
mips汇编之输入两个整数并打印它们的和
以下程序在pcspim7.0上编译通过########################################################
输入两个整数并打印它们的和...
这是MIPS 加载,算数以及逻辑运算的指令介绍,内容来自《SEE MIPS RUN》的部分内容。...
一.实验目的
(1)了解和熟悉指令级模拟器
(2)熟悉掌握MIPSsim模拟器的操作和使用方法
(3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解
(4)熟悉MIPS体系结...
浮点数&em&加法&/em&指令 &em&MIPS&/em& 5C币 157下载
&em&mips&/em& 加减乘除 5C币 17下载
ARM指令实现加减乘除 3C币 7下载
&em&MIPS&/em& 指令实现冒泡排序法 3C币 117下载
使用&em&MIPS&/em&指令实现...
&em&mips&/em&汇编语言实现浮点数运算 立即下载
上传者: luomike 时间:
综合...*详细原因:
交 汇编试验&em&加法&/em&实现 3积分 立即下载 ...
计算机组成原理实验 实验4 微程序控制器实验 设计一条&em&加法&/em&指令 立即下载
上传者...浮点数&em&加法&/em&指令 &em&MIPS&/em& 5C币 158下载
Linux指令操作实验报告 5C币 15下载
没有更多推荐了,最近在做项目的管理费,在客户端用js写的。发现了一个重大问题,比如0.7*8.1=5.,10.3-9.2=1..为什么会出现这些问题呢?难道是js对浮点数运算的bug?该怎么办?
“内事不决问百度,外事不决问google”啊,上网查找资料,证实了我的想法,也找到了解决方案。同时我也有了自己的解决方案。
1、网上解决方案是对浮点数的运算做了类似重写,代码如下:(转载)
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){}
try{t2=arg2.toString().split(".")[1].length}catch(e){}
with(Math){
r1=Number(arg1.toString().replace(".",""));
r2=Number(arg2.toString().replace(".",""));
return (r1/r2)*pow(10,t2-t1);
}//给Number类型增加一个div方法,调用起来更加方便。Number.prototype.div = function (arg){
return accDiv(this, arg);
};//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果function accMul(arg1,arg2)
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);}//给Number类型增加一个mul方法,调用起来更加方便。Number.prototype.mul = function (arg){
return accMul(arg, this);
};//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
return (arg1*m+arg2*m)/m;}//给Number类型增加一个add方法,调用起来更加方便。Number.prototype.add = function (arg){
return accAdd(arg,this);
}//减法函数function accSub(arg1,arg2){
var r1,r2,m,n;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
//last modify by deeka
//动态控制精度长度
n=(r1&=r2)?r1:r2;
return ((arg2*m-arg1*m)/m).toFixed(n);}///给number类增加一个sub方法,调用起来更加方便Number.prototype.sub = function (arg){
return accSub(arg,this);
这样,如果你要计算0.7*8.1 只需(0.7).mul(8.1)调用mul方法就可以得到准确的答案。
2、我的解决方案
这不失为一种好方法,然而,我想将浮点型转化为整形后再做运算也是解决的一种方法。如0.7*8.1,我们可以这么算(0.7*10)*(8.1*10)/100,结果为5.67,显然是可以的。又通过项目的实践,都能得出准确的结果。
三、总结:
1、尽量不要用JS做复杂的运算,特别是浮点数的运算。
2、如果一定要进行浮点数的运算的话,先将浮点数转化为整形,再运算。
---------------------
转载地址: http://www.cnblogs.com/jiahaipeng/archive//1321821.html
js小数失精度的解决方法
原文:http://www.jb51.net/article/85465.htm//除法
function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
Javascript优化后的加减乘除(解决js浮点数计算bug)
访问http://qinshenxue.com/article.aspx?id=1查看最新文章
说明众所周知,js在计算浮点数时候,结果可能会不准确。比如:(在chrome中的运算结果)
javascript中做减法时,出现小数位增加bug
地址:http://www.iteye.com/problems/92347
这个bug是js固有的,浮点数精度不准,你可以用下面方法来解决,思路是先放大,求和、差、积等运算后再缩小。
js数字相加bug解决办法
PS:事件,做承运商结算中的待开票页面,每一条数据有单价和重量和小计价。需要呈现的效果,勾选数据,得到总条数和总重量和总价。
解决办法,先用相加函数进行计算,最后再用toFix()函数进行四舍五入。...
js这个很容易忽略的小小细节
function add(a, b) {
c = a.toString().split(&.&)[1].
*详细原因:
交 解决&em&JS浮点&/em&数(小数)&em&计算&/em&加减乘除的&em&BUG&/em& 3积分 立即下载 ...
在js中使用浮点数运算,有时候不能得到合适的结果。有时候会发现出现**0000005的样子。
解决方案,重写js对浮点型的运算。代码来源于网络
//浮点数加法运算
function FloatA...
今天偶然间测试跟我说了一个bug,,我第一接触这个bug,接下来就描述一下这个问题,
后台返回的数据是下图所示:
但是我的处理就是*100+%,也就是转换成百分比的形式,但是结果却是这样的
没有更多推荐了,关于C语言除0引发的思考
转载 &更新时间:日 09:40:33 & 作者:
很多 C 库都提供了一组函数用来判断一个浮点数是否是无穷大或 NaN。int _isnan(double x) 函数用来判断一个浮点数是否是 NaN,而 int _finite(double x) 用以判断一个浮点数是否是无穷大
代码如下:&SPAN style="BACKGROUND-COLOR: rgb(241,254,221)"&&SPAN style="FONT-FAMILY: Microsoft YaHei"&&&& 进行浮点数编程时,如果没有注意,常常会出现输出类似 1.#IND, 1.#INF 或者 nan, inf 之类奇怪的输出。这通常隐含了浮点数操作的异常。&/SPAN&&/SPAN&进行整数除0的时候,程序会检查出一个错误,比如对于这个代码: 代码如下:#include &stdio.h&#include &math.h&
int main(){&&&& m=1/0;&& printf("%d",m);&&& return 0;}运行完以后程序就会警告:warning: division by zero [-Wdiv-by-zero]&但是对于浮点数,就没有类似的检查: 代码如下:#include &stdio.h&#include &math.h&
int main(){&&&& m=1.0/0.0;&& printf("%lf",m);&&& return 0;}不会有警告或者报错,但是运行完以后会出现这样的值:-1.#IND00,不知所云。于是上网查了一下,原来是这样!
特殊浮点数的含义1.#INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的最大范围(或者说超过了 double 类型的最大值)。例如,当用 0 除一个整数时便会得到一个1.#INF / inf值;相应的,如果用 0 除一个负整数也会得到 -1.#INF / -inf 值。&&& -1.#IND / nan:这个的情况更复杂,一般来说,它们来自于任何未定义结果(非法)的浮点数运算。"IND"是 indeterminate 的缩写,而"nan"是 not a number 的缩写。产生这个值的常见例子有:对负数开平方,对负数取对数,0.0/0.0,0.0*∞, ∞/∞ 等。& 简而言之,如果遇到 1.#INF / inf,就检查是否发生了运算结果溢出除零,而遇到 1.#IND / nan,就检查是否发生了非法的运算。&&& &
特殊浮点数的判断很多 C 库都提供了一组函数用来判断一个浮点数是否是无穷大或 NaN。int _isnan(double x) 函数用来判断一个浮点数是否是 NaN,而 int _finite(double x) 用以判断一个浮点数是否是无穷大。
你可能已经注意到了,上面两个函数都是以下划线开头的,因此在可移植性上可能是存在问题的,那么如何实现一个通用的判断版本呢?首先,对于 Nan,可以用下面的代码实现:&
代码如下:bool IsNumber(double x){&&& // 这里的比较操作看上去总是会得到 true&&& // 但有趣的是对于 IEEE 754 浮点数 NaN 来说总会得到 false!&&& return (x == x);}而下面的代码可以判断一个浮点数是否是有限的(finite, 即既不是 NaN 又不是 infinite): 代码如下:bool IsFiniteNumber(double x){&&& return (x &= DBL_MAX && x &= -DBL_MAX);}其中,DBL_MAX 是 &float.h& 中预定义的常量。&&& 把上面两个函数结合起来,还可以实现一个浮点数是否是 Inf 的判断。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具如何在程序中截获被0除错误--《计算机世界》1994年12期
如何在程序中截获被0除错误
【摘要】:正 在程序中设置中断陷阱,用以拦截各种异常错误,是保证程序可靠性的有效途径。科学计算中,防止除数为0(含整数0和浮点数0.0)能避免程序异常中断。如果忽略了对除数的检测,轻则破坏屏幕显示的完整性,如显示信息"divided by zero"(整数除法)或"floating error:do main"(浮点数除法),重则造成系统崩溃。对于整数除法,我们可以通过下面的语句防止错误发生:if(除数=0)prinft("\n除数为01");exit(一1);对于浮点数除法,由于计算机用一个最近的数表示浮点数,所以不能简单地用"除数=0.0"来判断错误。我们知道,被0除后,计算机将转向运行INTO。截获并修改INTO中断处理程序,看来是一个可行方案。但这并不是一个好方案。一个C语言程序经TC系列编译器编译链接成可执行程序。在运行用户自行编写的main()主程序之前,
【分类号】:TP311.11
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
&快捷付款方式
&订购知网充值卡
400-819-9993二进制计算问题,浮点表示最近在看唐朔飞老师的计算机组成原理,里面有几个计算看不懂(数的浮点表示方面),11.101*(2^10)=1.1)//这些都是二进制数这个是怎么来的,如果要看懂这 - 作业搜
您好,欢迎来到作业搜!
当前位置:
二进制计算问题,浮点表示最近在看唐朔飞老师的计算机组成原理,里面有几个计算看不懂(数的浮点表示方面),11.101*(2^10)=1.1)//这些都是二进制数这个是怎么来的,如果要看懂这
二进制计算问题,浮点表示最近在看唐朔飞老师的计算机组成原理,里面有几个计算看不懂(数的浮点表示方面),11.101*(2^10)=1.1)//这些都是二进制数这个是怎么来的,如果要看懂这个式子还需要哪方面的知识,先谢谢回答的人了
你的等式是不是有问题呀,中间的应该是2^2
就是逢二进一存储实数(浮点数)一个数字的浮点表示法由三个部分组成:符号、位移量(指数)、定点数.例如:实际数字:科学计数法:7.425×10^9这三部分为符号(+)、位移量(9)以及定点部分(7.425).注意位移量就是指数.类似的方法可以表示很小或者很大的存储在计算机中的二进制数字(整数和实数都可以).例如:实际数字:科学计数法:1.0所以,为了使表示法的固定部分统一,无论是十进制的数还是二进制的数都写成以下形式十进制——————±d.xxxxxxxxxxx
注意:d是0到9的数,每个x都是0到9的数二进制——————±1.yyyyyyyyyyy
注意:每个y都是0或者1在一个二进制数规范化之后,我们只存储该数的三部分信息:符号、指数、尾数.例如:+1.×2^6
符号为+、指数6、尾数(注意小数点左边的1并不存储,它是隐含的)尾数就是直接用无符号的数存储,指数部分应该用有符号的数存储,即补码存储,因为指数有可能是负数.但现在已经被一种叫余码系统的新方法所取代.在这种余码系统中,正的和负的数都可以作为无符号数存储,方法就是在指数的基础上统一加上一个数,这个数就是偏移量,它是2n-1,n是内存中存储指数的位数.如:指数占8位,那么偏移量就是127.这样做的好处就是指数经过加上偏移量后,所有的指数都将变成正数,统一用无符号数存储了!IEEE标准如今我们在计算机中存储实数分为单精度和双精度.IEEE为我们制定了相关的格式和标准具体如下:单精度共占32位符号S 指数E 尾数M
占23位因为指数位占8位,所以偏移量为127,即余127码双精度共占64位符号S 指数E 尾数M
占52位因为指数位占11位,所以偏移量为1023,即余1023码例题:写出5.75的单精度表示法?(余127码)1、 符号为正,所以符号位S=02、 十进制5.75转换为二进制位(101.11)23、 规范化:101.11=1.4、 所以指数E=2+127=129=(
尾数M=0111,不够23位在后面添19个05、 最后该数的表示法为:
尾数6、所以5.75采用单精度存储,在计算机中应为大概就是这些知识点了}

我要回帖

更多关于 超级计算机浮点运算 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信