高精度电阻问题

博客分类:
&&& 使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。
&&&& 所以一般对double类型进行运算时,做好对结果进行处理,然后拿这个值去做其他事情。
&&&& 目前总结如下:
&&&& * 对double数据进行取精度.&
&&&& * @param value& double数据.&
&&&& * @param scale& 精度位数(保留的小数位数).&
&&&& * @param roundingMode& 精度取值方式.&
&&&& * @return 精度计算后的数据.&
&&& public static double round(double value, int scale,
&&&&&&&&&&&& int roundingMode) {&&
&&&&&&& BigDecimal bd = new BigDecimal(value);&&
&&&&&&& bd = bd.setScale(scale, roundingMode);&&
&&&&&&& double d = bd.doubleValue();&&
&&&&&&& bd =&&
&&&& /**
&&&& * double 相加
&&&& * @param d1
&&&& * @param d2
&&&& * @return
&&&& */
&&& public double sum(double d1,double d2){
&&&&&&& BigDecimal bd1 = new BigDecimal(Double.toString(d1));
&&&&&&& BigDecimal bd2 = new BigDecimal(Double.toString(d2));
&&&&&&& return bd1.add(bd2).doubleValue();
&&& }
&&& /**
&&&& * double 相减
&&&& * @param d1
&&&& * @param d2
&&&& * @return
&&&& */
&&& public double sub(double d1,double d2){
&&&&&&& BigDecimal bd1 = new BigDecimal(Double.toString(d1));
&&&&&&& BigDecimal bd2 = new BigDecimal(Double.toString(d2));
&&&&&&& return bd1.subtract(bd2).doubleValue();
&&& }
&&& /**
&&&& * double 乘法
&&&& * @param d1
&&&& * @param d2
&&&& * @return
&&&& */
&&& public double mul(double d1,double d2){
&&&&&&& BigDecimal bd1 = new BigDecimal(Double.toString(d1));
&&&&&&& BigDecimal bd2 = new BigDecimal(Double.toString(d2));
&&&&&&& return bd1.multiply(bd2).doubleValue();
&&& }
&&& /**
&&&& * double 除法
&&&& * @param d1
&&&& * @param d2
&&&& * @param scale 四舍五入 小数点位数
&&&& * @return
&&&& */
&&& public double div(double d1,double d2,int scale){
&&&&&&& //& 当然在此之前,你要判断分母是否为0,&&
&&&&&&& //& 为0你可以根据实际需求做相应的处理
&&&&&&& BigDecimal bd1 = new BigDecimal(Double.toString(d1));
&&&&&&& BigDecimal bd2 = new BigDecimal(Double.toString(d2));
&&&&&&& return bd1.divide
&&&&&&&&&&&&&& (bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
&&& }
这样,计算double类型的数据计算问题就可以处理了。
另外补充一下 JavaScript 四舍五入的方法:
小数点问题
Math.round(totalAmount*100)/100 (保留 2 位)
function formatFloat(src, pos)
{
&
return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
}
希望以上对大家有所帮助,如果说错了,还希望大家给点指正!
浏览 73767
楼主好厉害,收益了!由于本人水平有点弱,所以想请教一下下面代码的含义:BigDecimal bd1 = new BigDecimal(Double.toString(d1));大概知道这语句的意思是调用 BigDecimal的BigDecimal(String val)构造方法生成BigDecimal对象,但有点不是很明白Double.toString(d1)的意思,为什么可以直接写Double来调用toString方法,这个Double不需要new一下吗?静态方法不需要new啦!
楼主好厉害,收益了!由于本人水平有点弱,所以想请教一下下面代码的含义:BigDecimal bd1 = new BigDecimal(Double.toString(d1));大概知道这语句的意思是调用 BigDecimal的BigDecimal(String val)构造方法生成BigDecimal对象,但有点不是很明白Double.toString(d1)的意思,为什么可以直接写Double来调用toString方法,这个Double不需要new一下吗?********这是一个单例。。。
gary_zg 写道楼主这种做法有问题,只要使用flaot或double,就会出现精度丢失方法里的参数都是double,在new BigDecimal前,double值就已经出现精度丢失了BigDecimal 有两个构造:&& 1. BigDecimal(double val)&& 2. BigDecimal(String val)但如果使用 double 构造,API中已经说明,这个构造器的结果可能会有不可预知的结果。如: System.out.println(new BigDecimal(1.2)); 结果是:1.1875而并非我们认为的 1.2;所以再构造BigDecimal的时候,原则上我们使用 BigDecimal(String val)构造,这样就不会出问题,而我提供的方法中(当然也是借鉴了网上的资料),都是把Double类型转换成String类型去构造的,所以不会出现问题。言之有理。
楼主这种做法有问题,只要使用flaot或double,就会出现精度丢失
方法里的参数都是double,在new BigDecimal前,double值就已经出现精度丢失了
BigDecimal 有两个构造:
&& 1. BigDecimal(double val)
&& 2. BigDecimal(String val)
但如果使用 double 构造,API中已经说明,这个构造器的结果可能会有不可预知的结果。如: System.out.println(new BigDecimal(1.2));
结果是:1.1875
而并非我们认为的 1.2;
所以再构造BigDecimal的时候,原则上我们使用 BigDecimal(String val)构造,这样就不会出问题,而我提供的方法中(当然也是借鉴了网上的资料),都是把Double类型转换成String类型去构造的,所以不会出现问题。
zhaowei_520
浏览: 112316 次
来自: 深圳
&div class=&quote_title ...
&div class=&quote_title ...
楼主好厉害,收益了!由于本人水平有点弱,所以想请教一下下面代码 ...
System.out.println(new BigDecim ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'高精度问题处理_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
高精度问题处理
&&c语言中的高精度运算问题整理
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩23页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢您所在位置: &
&nbsp&&nbsp
确定高精度参数问题资料.doc 14页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:50 &&
你可能关注的文档:
··········
··········
确定高精度参数问题
本文依据题目要求,在万有引力和牛顿第二定律的基础上,首先建立了航天器运动模型;再次利用食饵—捕食者系统模型,在非线性最小二乘法的基础上对未知高精度参数进行估计;最后,本文针对题目所给出的现有模型进行合理化的改进,以满足题目要求。
对于问题一,本文利用物理上常用的知识,建立平面上的常微分方程组模型,以对航天器的运动进行模拟。
对于问题二,本文以最小二乘拟合为主,通过建立不同的模型对题目的要求分别求解。
在第一问中,本文先将食饵—捕食者系统模型转化为隐式方程的结构,再基于此方程,利用已知无误差数据和已知参数值,通过最小二乘拟合求出各未知参数,结果详见正文。
在第二问中,本文从理论上分析出,只要求得方程组的解析解,则再有4组无误的观测值就可以拟合出4个未知参数,同时考虑方程初值的确定问题,因此至少需要5组观测数据,就可以确定6个未知参数。
在第三问中,由于观测值存在误差,因此方程的初值也需要拟合,本文基于上问中的最小二乘法进行求解,发现结果误差较大,为减小误差,本文对模型进行修改,本文运用4级4阶龙格库塔法对模型加以修改。
在第四问中,观测的时间也发生了偏差,为了消除时间上的偏差,本文使用了分段线性插值消除时间误差,再利用第三问的方法对参数进行预测。
一:考虑航天器在仅受到地球万有引力、航天器自身发动机作用力的作用下作平面运动,将地球和航天器视为质点,试建立航天器运动的数学模型(只要列出模型,不要求解)。
假设有一个生态系统,其中含有两种生物,即: A生物和B生物,其中A生物是捕食者,B生物是被捕食者。假设时刻捕食者A的数目为,被捕食者B数目为,它们之间满足以下变化规律:
初始条件为:
其中为模型的待定参数。
通过对此生态系统的观测,可以得到相关的观测数据。观测数据的格式依次为:
观测时刻、A生物数目、B生物数目
二:请利用有关数据,解决以下问题:
1) 在观测数据无误差的情况下,若已知,求其它5个参数?有关数据见数据文件:DATA1.TXT
2) 在观测数据无误差的情况下,若也未知,问至少需要多少组观测数据,才能确定参数?有关数据见数据文件:DATA1.TXT
3) 在观测资料有误差(时间变量不含有误差)的情况下,请分别利用观测数据DATA2.TXT和DATA3.TXT,确定参数在某种意义下的最优解,并与仿真结果比较,进而改进你们的数学模型。
4) 假设连观测资料的时间变量也含有误差,试利用数据DATA4.TXT,建立数学模型,确定参数在某种意义下的最优解。
(1)假设地球和航天器为质点,且运动过程中只受地球万有引力、航天器自身发动机作用力的作用。
(2)假设是一个包括捕食与被捕食两个种群的生态系统,捕食者靠被捕食者而生存,系统与外界没有种群交换关系。
(3)假设种群自身的增殖变化速率与 t 时刻种群的数量成比率。
4.1 航天器运动分析
由于航天飞机只在平面内飞行,本文认为飞机在飞行中,飞行速度和加速度为时间的函数。在某一确定的点,在考虑惯性力因素下,飞机受力平衡,因此可以建立在飞船飞行方向上和指向地球方向上的平衡方程,该平衡方程即为建立航天器运动的数学模型。
4.2 生物种群模型分析
数据无误时模型分析
本文根据题目所给出的捕食者的数捕食者A的数目为,被捕食者B数目为,它们之间满足以下变化规律:
进行数学变形,把模型转化为隐式方程的结构,根据初始条件与附件可以很容易的得到与的值。利用已知无误差数据和已知参数值,通过最小二乘拟合求出参数.的值。
未知时模型分析
本题与问题一唯一的区别就是的值未知,同样的可以根据初始值知道与的值,由于的值是未知的,为此,我们可以先通过一组数据,得到参数的解析解,然后再用组数据就可以其他未知参数的值。
在确定参数的实际值时,本文利用参数之比为周期之比,用观测法得出所求参数的周期,同时利用公式,求出拟合后的周期,利用周期比为各参数之比,得到未知参数。
数据有误时间无误时模型分析
首先,由于初始值也存在误差,本文将作为未知参数带入所求出的隐式方程,从而用非线性最小二乘拟合对相对参数进行拟合。
再次,通过周期之比得到最终的未知参数。
最后,本文建立了4级4阶龙格库塔公式对模型进行改进,以应对由于数据误差较大时产生的数据偏差。
数据有误时间也有误时模型分析
对于时间上的偏差,本文先利用分段样条插值消除由于时间上的偏差所造成的影响,再次利用第三问的方法对未知参数进行求解。
模型建立与求解
5.1 航天器运动的数学模型
在考虑飞机模型时,为方便模型的建立,本文首先以地球为中心建立平面直角坐标系(如下图),将运动物理问题抽象为平面运动问题,同时假设飞船围绕地球做圆周运动,再由牛顿第二定律与万有引力定律可以
正在加载中,请稍后...&>&高精度整数问题
高精度整数问题
上传大小:59KB
计算大整数组合数和 Catalan 数的精确值。
综合评分:5(2位用户评分)
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有2条
不错的解法
不错的资源,不过能打上点注释就好了
综合评分:
积分/C币:3
综合评分:
积分/C币:3
maomao521078
综合评分:
积分/C币:0
综合评分:
积分/C币:5
综合评分:
积分/C币:10
综合评分:
积分/C币:2
综合评分:
积分/C币:10
综合评分:
积分/C币:0
mashuangqing
综合评分:
积分/C币:0
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
扫码关注并点击右下角获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
高精度整数问题
会员到期时间:
剩余下载个数:
剩余积分:
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励5下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
高精度整数问题最大允许示值误差MPEE&&(m)
2.2 + 3.0L/1000
其中的+3.0L/1000什么意思?
回复:CMM精度问题
L是長度,長度越長,誤差就越大
比如說量測1米長的尺寸,誤差最大為2.2+3*.2
andy_you 最后编辑于
I wish to face the sea, with spring flowers blossoming
回复:CMM精度问题
回复:CMM精度问题
2喽算出的5.2单位是MM吗 ?有那么大的误差吗?
回复:CMM精度问题
楼上的,2.2能直接与MM单位相加吗?这可是小学的数学基础知识呢
语气有点过分,不过实在是忍不住。不好意思了
做人别看得太近也别看得太远,以五年为一周期去思索,你会走得更远更快!
回复:CMM精度问题
2楼说的是正确的,只是他没有讲这个单位是微米而已
yj407 最后编辑于
回复:CMM精度问题
4L问的问题没有任何错误的地方,最多只是常识问题
还小学基础知识,5L小学毕业几年了?
回复 7F VINNYPAUL 的帖子
5L小学毕业快20年了。但是,常识性的东西是忘记不了的。
不懂是要多问,但是在问之前,请先思考一下,是在思考后不懂才问。而且,问完之后,发觉基础欠缺,就要花点功夫去补补,多学习,这恐怕也是常识问题。
做事要对自己有点要求。要不然,问这些问题给领导知道,对你的能力认识,考评,想想看。。。。。。
做人别看得太近也别看得太远,以五年为一周期去思索,你会走得更远更快!
kongfeichao
回复:CMM精度问题
定一下!路过!呵呵
生命中,不断地有人离开或进入,于是,看见的看不见了,记住的遗忘了;生命中,不断的有得到和失落,于是,看不见的看见了,遗忘的记住了........
单位是微米,毫米误差就太大了}

我要回帖

更多关于 高精度电阻 的文章

更多推荐

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

点击添加站长微信