求助,测量平差精度评定定问题

产品反求模型的精度评价-反求模型-机床行业-hc360慧聪网
关键词搜索
产品反求模型的精度评价
日 9:57&&来源:《机械》
&作者:昆明理工大学 金涛 浙江大学 匡继勇
反求工程中,模型精度评价主要解决以下问题:(1)由反求工程中重建得到的模型和实物样件的误差到底有多大;(2)所建立的模型是否可以接受。
1 精度评价及量化指标
精度评价指标
精度反映反求模型和产品实物差距的大小,评价指标分为整体指标和局部指标、量化指标和非量化指标。整体指标指的是实物或模型总体性质,如整体几何尺寸、体积、面积以及几何特征间的几何约束关系,如孔、槽之间的尺寸和定位关系;局部指标指的是曲面片与实物对应曲面的偏离程度。量化指标指精度的数值大小,非量化指标主要用于曲面模型的评价,如表面的光顺性等,以人的感官评价为标准。
曲面品质分析方法
曲面品质分析方法主要是分析曲面光顺性,目前,商品化的CAD/CAM集成系统都具有曲面品质分析功能和多种分析方法,如高斯曲率(Guassian Curvature)、截面曲率(Section Curvature)、斜率(Slope)、双向曲率(Porcupine)、法向矢量(Normals)和反射线法(Reflect Curve)等。利用这些分析方法,通过着色渲染来观察曲面曲率变化,来评估曲面质量。
图1 反求模型的误差源
精度量化指标
在反求工程的每一个环节,从产品原型制造、数据测量、处理到模型重建,均会产生误差,从而导致相当数量的积累误差,图1表示反求建模的误差源。
反求模型与实物样件的总误差即是各个环节的传递累积误差,其数学式为
e总=f(e原+e测+e处+e造)
一般地定义各项误差的均方根作为精度误差,即精度量化指标,则有
e精=(e原2+e测22+e处2+e造2)½
上式因各项误差的权重难确定而按等权处理,但由于各项误差的大小难以确定,精度的准确值也就不能确定,在实际工程应用中,通常是用测量点到曲面模型的距离作为模型是否准确的一种判定指标。
由于在反求工程中,可以用一系列采样点来描述实物样件,因此,实物样件与模型曲面之间的误差,表现为采样点与模型曲面之间的误差。模型与实物的对比问题转换为计算点到曲面的距离,其精度指标可以采用以下几个距离指标表示:最大距离、平均距离和距离误差估计等。当采样参考点到模型曲面的距离指标的最大值不超过给定的阈值,则可认为重建模型是合格的。用距离作为判定指标实际上反映的是造型拟合误差,其数值小于实际的反求模型精度值。下面我们研究误差源,一方面分析各误差产生的原因及对精度的影响,另一方面提出控制误差的策略,以提高反求模型的精度。
2 误差分析
误差产生原因及大小
原型误差:指原产品的制造误差,如果原型是使用过的,还存在磨损误差。原型误差一般较小,其大小一般在原设计的尺寸公差范围内,对使用过的产品可根据使用年限,考虑加上磨损量。另外实物的表面粗糙度会影响数据的测量精度。
测量误差:选择坐标测量机(CMM)测量时,测量误差包括测量机系统误差、测量人员视觉和操作误差、产品的变形误差和测头半径补偿误差等:①系统误差:主要由标定误差、温度误差和探针弯曲误差组成,目前使用的$CMM的测量精度可以精确到几个&。②测量人员视觉和操作误差:主要是在手动测量过程中,测量探头的触点完全由操作者视觉定位,难以保证探头中心和被测点中心完全重合,其误差值通常在一个探头半径内。③变形误差:对在探头接触压力下会产生变形的产品,选择适宜的测量力,同时装夹和固定好被测产品。有条件时可选择非接触测量,如激光、计算机断层技术等。④补偿误差:主要由接触式坐标测量机的探头半径二维补偿造成,特别是进行空间曲面、曲线测量时,用二维补偿方法就会带来补偿误差。
数据预处理误差:数据处理是指对测量数据进行平滑及转换。数据转换又称数据坐标变换,主要用于多视数据的重定位,基准点的选择、基准点的测量误差会导致数据的变换误差。另外数据预处理还会产生有效数字的舍入误差。
造型误差:主要是CAD造型软件的实体造型误差,曲线、曲面的拟合误差。
上述误差中,除补偿误差外,其他几种误差都可以在测量过程中加以控制。而补偿误差,可以用三维补偿计算来消除。
测头半径的三维补偿方法
曲面片偏距补偿
测量时对测量点不进行补偿,完成曲面片的造型后,将曲面片整体偏距一个测头半径值。曲面片偏距补偿较简单,不需进行复杂的计算,适合于单一曲面构成的形状表面,不能进行轮廓边界的补偿。
测点补偿又称测点计算补偿,根据测头中心轨迹曲面方程,用轨迹曲面S*在采样点Pij处的单位法矢量nij*(ui,vj)代替被测曲面S在对应点Pij处的法矢量nij(ui,vj),可得测头半径补偿方式
为避免计算偏导数,法矢量nij*(ui,vj)可以这样确定,对规则有序点列,分别计算点P周围的四个矢量u,v,r,s,再计算矢量相互的叉积,u×s、u×r、v×s和v×r,见图2。这样法矢量np可近似等于四个矢量积的平均,即
np=¼[(u×s)+(u×r)+(v×s)+(v×r)]
图2 曲面网格点法矢计算
图3 三点测量法
测量实时补偿
方法是测量时,探头在应测点P的一个小邻域内,分别采集三个参考点,用三点组成的小平面的法矢近似作为P处的法矢,进行半径补偿,见图3。这种方法适用于复杂曲面的测量手动和自动测量,但大大增加了测量工作量和测量时间。
精度评价是反求工程研究的一项重要内容,反求产品性能达不到原设计要求,其中重建模型不能准确还原原型是主要原因之一,目前仍无精度评价标准,对反求模型的精度评价主要依靠一些能具体量化的指标,并通过最终产品的实际应用效果加以检验。在模型重建工作中,为提高模型精度,通过研究分析反求过程的误差源,尽量减少误差仍是主要的技术手段。
 [关键词]:&
&【】&【】
?&&(7.25 9:9)
我来评两句& 请您注意:?遵守中华人民共和国的各项有关法律法规?承担一切因您的行为而导致的法律责任?本网留言板管理人员有权删除其管辖留言内容 ?您在本网的留言,本网有权在网站内转载或引用 ?参与本留言即表明您已经阅读并接受上述条款昵称:匿名
? ? ? ? ? ? ? ?
恩德北京分公司服务部主任杨德勤先生
亿缙(嘉兴)梁瑞能经理:
? ? ? ? ? ?欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 7749 人关注过本帖
标题:求助,,,C++输出的小数精度怎么控制啊?
等 级:新手上路
帖 子:13
结帖率:33.33%
&&已结贴√
&&问题点数:20&&回复次数:8&&&
求助,,,C++输出的小数精度怎么控制啊?
如题,感谢赐教
等 级:新手上路
帖 子:13
找到答案了。。。程序代码:&&#include &iostream&
&&#include &iomanip&
&&using namespace
&&int main( void )
&&const double value = <font color=#.3456789;
&&cout && value && // 默认以6精度,所以输出为 12.3457
&&cout && setprecision(<font color=#) && value && // 改成4精度,所以输出为12.35
&&cout && setprecision(<font color=#) && value && // 改成8精度,所以输出为12.345679
&&cout && fixed && setprecision(<font color=#) && value && // 加了fixed意味着是固定点方式显示,所以这里的精度指的是小数位,输出为12.3457
&&cout && value && // fixed和setprecision的作用还在,依然显示12.3457
&&cout.unsetf( ios::fixed ); // 去掉了fixed,所以精度恢复成整个数值的有效位数,显示为12.35
&&cout && value &&
&&cout.precision( <font color=# ); // 恢复成原来的样子,输出为12.3457
&&cout && value &&
等 级:职业侠客
帖 子:215
专家分:367
来 自:苏州中科大软件学院
等 级:职业侠客
帖 子:422
专家分:340
好好学习&&天天向上
等 级:新手上路
等 级:论坛游民
帖 子:10
专家分:10
恩恩,学习一下~~~
等 级:论坛游侠
帖 子:71
专家分:139
等 级:论坛游民
帖 子:19
专家分:20
来 自:三明
等 级:新手上路
帖 子:12
很不错,学习了。
版权所有,并保留所有权利。
Powered by , Processed in 0.052070 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved产品反求模型的精度评价
产品反求模型的精度评价
发布: | 作者: | 来源:
| 查看:893次 | 用户关注:
摘要:在反求工程中,产品重建模型精度评价的目的是判断模型是否满足要求,由于产品的数字化和造型过程中存在误差,重构模型与原型存在差异,直接影响反求产品性能的实现与产品创新,本文分析了反向工程中的误差源及产生原因,提出了控制误差的策略和测头三维补偿方法,在此基础上探讨了模型精度评价的依据及方法。反求工程中,模型精度评价主要解决以下问题:(1)由反求工程中重建得到的模型和实物样件的误差到底有多大;(2)所建立
摘要:在反求工程中,产品重建模型精度评价的目的是判断模型是否满足要求,由于产品的数字化和造型过程中存在误差,重构模型与原型存在差异,直接影响反求产品性能的实现与产品创新,本文分析了反向工程中的误差源及产生原因,提出了控制误差的策略和测头三维补偿方法,在此基础上探讨了模型精度评价的依据及方法。反求工程中,模型精度评价主要解决以下问题:(1)由反求工程中重建得到的模型和实物样件的误差到底有多大;(2)所建立的模型是否可以接受。 1 精度评价及量化指标精度评价指标 精度反映反求模型和产品实物差距的大小,评价指标分为整体指标和局部指标、量化指标和非量化指标。整体指标指的是实物或模型总体性质,如整体几何尺寸、体积、面积以及几何特征间的几何约束关系,如孔、槽之间的尺寸和定位关系;局部指标指的是曲面片与实物对应曲面的偏离程度。量化指标指精度的数值大小,非量化指标主要用于曲面模型的评价,如表面的光顺性等,以人的感官评价为标准。曲面品质分析方法 曲面品质分析方法主要是分析曲面光顺性,目前,商品化的CAD/CAM集成系统都具有曲面品质分析功能和多种分析方法,如高斯曲率(Guassian Curvature)、截面曲率(Section Curvature)、斜率(Slope)、双向曲率(Porcupine)、法向矢量(Normals)和反射线法(Reflect Curve)等。利用这些分析方法,通过着色渲染来观察曲面曲率变化,来评估曲面质量。图1 反求模型的误差源精度量化指标 在反求工程的每一个环节,从产品原型制造、数据测量、处理到模型重建,均会产生误差,从而导致相当数量的积累误差,图1表示反求建模的误差源。 反求模型与实物样件的总误差即是各个环节的传递累积误差,其数学式为 e总=f(e原+e测+e处+e造)(1)一般地定义各项误差的均方根作为精度误差,即精度量化指标,则有 e精=(e原2+e测22+e处2+e造2)&frac12;(2)上式因各项误差的权重难确定而按等权处理,但由于各项误差的大小难以确定,精度的准确值也就不能确定,在实际工程应用中,通常是用测量点到曲面模型的距离作为模型是否准确的一种判定指标。 由于在反求工程中,可以用一系列采样点来描述实物样件,因此,实物样件与模型曲面之间的误差,表现为采样点与模型曲面之间的误差。模型与实物的对比问题转换为计算点到曲面的距离,其精度指标可以采用以下几个距离指标表示:最大距离、平均距离和距离误差估计等。当采样参考点到模型曲面的距离指标的最大值不超过给定的阈值,则可认为重建模型是合格的。用距离作为判定指标实际上反映的是造型拟合误差,其数值小于实际的反求模型精度值。下面我们研究误差源,一方面分析各误差产生的原因及对精度的影响,另一方面提出控制误差的策略,以提高反求模型的精度。2 误差分析误差产生原因及大小 原型误差:指原产品的制造误差,如果原型是使用过的,还存在磨损误差。原型误差一般较小,其大小一般在原设计的尺寸公差范围内,对使用过的产品可根据使用年限,考虑加上磨损量。另外实物的表面粗糙度会影响数据的测量精度。 测量误差:选择坐标测量机(CMM)测量时,测量误差包括测量机系统误差、测量人员视觉和操作误差、产品的变形误差和测头半径补偿误差等:①系统误差:主要由标定误差、温度误差和探针弯曲误差组成,目前使用的$CMM的测量精度可以精确到几个&。②测量人员视觉和操作误差:主要是在手动测量过程中,测量探头的触点完全由操作者视觉定位,难以保证探头中心和被测点中心完全重合,其误差值通常在一个探头半径内。③变形误差:对在探头接触压力下会产生变形的产品,选择适宜的测量力,同时装夹和固定好被测产品。有条件时可选择非接触测量,如激光、计算机断层技术等。④补偿误差:主要由接触式坐标测量机的探头半径二维补偿造成,特别是进行空间曲面、曲线测量时,用二维补偿方法就会带来补偿误差。 数据预处理误差:数据处理是指对测量数据进行平滑及转换。数据转换又称数据坐标变换,主要用于多视数据的重定位,基准点的选择、基准点的测量误差会导致数据的变换误差。另外数据预处理还会产生有效数字的舍入误差。 造型误差:主要是CAD造型软件的实体造型误差,曲线、曲面的拟合误差。上述误差中,除补偿误差外,其他几种误差都可以在测量过程中加以控制。而补偿误差,可以用三维补偿计算来消除。测头半径的三维补偿方法 曲面片偏距补偿 测量时对测量点不进行补偿,完成曲面片的造型后,将曲面片整体偏距一个测头半径值。曲面片偏距补偿较简单,不需进行复杂的计算,适合于单一曲面构成的形状表面,不能进行轮廓边界的补偿。测点补偿 测点补偿又称测点计算补偿,根据测头中心轨迹曲面方程,用轨迹曲面S*在采样点Pij处的单位法矢量nij*(ui,vj)代替被测曲面S在对应点Pij处的法矢量nij(ui,vj),可得测头半径补偿方式 (3)为避免计算偏导数,法矢量nij*(ui,vj)可以这样确定,对规则有序点列,分别计算点P周围的四个矢量u,v,r,s,再计算矢量相互的叉积,u×s、u×r、v×s和v×r,见图2。这样法矢量np可近似等于四个矢量积的平均,即 np=&frac14;[(u×s)+(u×r)+(v×s)+(v×r)](4)图2 曲面网格点法矢计算图3 三点测量法测量实时补偿 方法是测量时,探头在应测点P的一个小邻域内,分别采集三个参考点,用三点组成的小平面的法矢近似作为P处的法矢,进行半径补偿,见图3。这种方法适用于复杂曲面的测量手动和自动测量,但大大增加了测量工作量和测量时间。3 总结精度评价是反求工程研究的一项重要内容,反求产品性能达不到原设计要求,其中重建模型不能准确还原原型是主要原因之一,目前仍无精度评价标准,对反求模型的精度评价主要依靠一些能具体量化的指标,并通过最终产品的实际应用效果加以检验。在模型重建工作中,为提高模型精度,通过研究分析反求过程的误差源,尽量减少误差仍是主要的技术手段。
本页面信息由华强电子网用户提供,如果涉嫌侵权,请与我们客服联系,我们核实后将及时处理。
iPhone8 CAD设计图流出:全面屏+垂直双摄像头。新人第一次求助,时钟周期的精确度问题|易语言俱乐部 - 易语言俱乐部 - Powered by phpwind
查看完整版本: [--
新人第一次求助,时钟周期的精确度问题
当系统刚启动时,创建时钟 时钟周期设置为1毫秒,结果是10毫秒返回。这一点可以用取系统启动时间来验证。用 延时()命令&&设置1毫秒,依然是10毫秒返回在论坛搜索到 凌晨孤星的高精度等待模块 用里面的SetWaitableTimer 创建1毫秒乃至1微秒的延时依然是10毫秒返回
最后发现当我打开浏览器或一个游戏等大工程软件时,时钟 与 延时命令 和 SetWaitableTimer 就都能在1毫秒返回了,但是当我把所以的程序游戏关闭后,只打开易语言 做以上动作时,时钟、延时、SetWaitableTimer等精度又会变为10毫秒。请问如何解决或是什么原因造成的
楼主说的太...另类了..首先,取启动时间() 是与系统时间无关的.就算系统蓝屏,那个时间也不会被影响.但是延时()这样的命令是会被影响的.时钟和延时的的精度是15毫秒左右楼主什么问题?楼主什么问题?我想了半天都不知道楼主在问什么..我都不知道该怎么回答了.要是楼主当面问我.我就一巴掌把你拍地下去.
跟着学习了
老七听老六说老五看见老四摸着老三的老二说老大了七姨妈听六姨妈说五姨妈不让四姨妈告诉三姨妈二姨妈没来大姨妈
感谢回复,我现在正在做一个MIDI播放器,如果调用系统自带的播放功能是无法得到实时的音符和命令位置,但是自己演奏MIDI 的1/4音符tick数 如果高于480,那么每一个tick的时钟间隔将低于1毫秒,如果tick数达到960,那么时钟的精度要求在500微秒以下才能完美播放,而以上我起到的全部命令最低精度都是1毫秒,无法满足这个条件。但是可以靠QueryPerformanceCounter函数解决,但是占用CPU较高。我只是想寻求一种占用CPU较低的方法来延时,起码要达到1毫秒的精度,如果是10毫秒就没意义了。以上我已经说明我的用途了,眼下我要知道的问题就是为什么打开一下软件游戏之后,时钟的周期和延时()命令 还有的SetWaitableTimer&&的精度都能达到1毫秒,但是当把游戏等软件关闭只运行我的程序时 这个命令的最小精度都变为10毫秒。也就是说即便我设置 延时(1) 和延时(10)返回时间都是10毫秒
我现在怀疑是Windows进入了节能降频状态,因为只要一运行游戏或谷歌浏览器,时钟的精度就会正常1毫秒。将游戏等关闭只运行我的程序时就会10毫秒返回一次,这只是我的猜测。大家可以做个测试.版本 2.支持库 spec.程序集 程序集1.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行.局部变量 A, 整数型A = 取启动时间 ().计次循环首 (1000, )&&&&延时 (1).计次循环尾 ()调试输出 (取启动时间 () - A)返回 (0)&&&#39; 可以根据您的需要返回任意数值打开一个大游戏,比如上古卷轴5 后运行此段代码 输出1000毫秒左右 ,当然这是正确的关闭游戏或浏览器之火,输出就是10000毫秒左右
你说的游戏影响,可能是你系统或电脑用过脑残卫士什么的优化过.------------------分割线--------------------高精度的计时,你可以论坛搜索关键词&高精度&别说1毫秒. 1微秒.1纳秒的都有.
你说的脑残卫士,那种东西我机器上是没有的,我已经10年没用过什么杀毒软件了。置于论坛搜高精度计时,我上面提到的SetWaitableTimer和QueryPerformanceCounter就是论坛搜索的,都是号称微秒的,QueryPerformanceCounter是可以的,但是占用CPU较高,需要1核心独占。而其他方法无一例外都会出现我说的这个问题。好了,还是感谢一下你的回答吧。
.版本 2.计次循环首 (, )&&&&延时 (0).计次循环尾 ()这样也是占用100CPU.但是会让出CPU.
又没说你需要什么功能,也没有源码.你到底想问什么.上个例子行不!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!次奥!!!!!!!!!!!!
这个就是我现在要做的项目,源码我暂时不想发,因为我还没右完善她,等我完善之后,如果有人想要我会发
我的问题不关系到源码,只是时钟周期和延时等命令的精度在某种情况下会发生变化,目前就这个问题
可能会有影响吧.但这说明不了什么,别人可以改变精度,你也可以.
。。。。。晕倒。。。。。。的确,这就是我要问的问题
用户被禁言,该主题自动屏蔽!
一见出问题就怪安全软件无语的逻辑
感谢回答看来一下多媒体定时器的函数说明,正好是针对MIDI演奏用的。遇到明白人一句话就能解决,非常非常感谢。我去研究下
取启动时间()有 0.5% 的精准偏差 正好是&&15 MS
所以,正常
嗯,我也发现是有些偏差,但是当循环1000次1毫秒时如果返回时间是10000毫秒左右,那么偏差就看出来了,不只是15毫秒的问题了。感谢你的回答。
可以结贴了,问题解决了。解决方法是用的朋友说的多媒体时钟,这个精度在任何时候都能达到1毫秒。所以高于1毫秒的延时用timeSetEvent函数处理,而其低于1毫秒的部分用QueryPerformanceCounter处理,这样就可以大大的降低CPU使用率
下面是多媒体定时器的代码,发出来供寻求同样答案的朋友参考吧。
.版本 2.支持库 spec .程序集 程序集1.程序集变量 系统时间.程序集变量 定时器句柄, 整数型 .子程序 _启动子程序, 整数型.局部变量 TIMECAPS, TIMECAPS timeGetDevCaps (TIMECAPS, 8)调试输出 (TIMECAPS.wPeriodMin, TIMECAPS.wPeriodMax).如果真 (TIMECAPS.wPeriodMin = 1)&&&&timeBeginPeriod (1)&&&&系统时间 = 取启动时间 ()&&&&定时器句柄 = timeSetEvent (1, 1, 到整数 (&OneMilliSecondProc), 0, 1)&&&&.如果 (定时器句柄 = 0)&&&&&&&&调试输出 (“创建定时器失败”, 定时器句柄)&&&&.否则&&&&&&&&调试输出 (“创建定时器成功”, 定时器句柄)&&&&.如果结束&&&&延时 (6000).如果真结束 返回 (0)&&&#39; 可以根据您的需要返回任意数值 .子程序 OneMilliSecondProc, 整数型.参数 wTimerID, 整数型.参数 msg.参数 dwUser.参数 dwl.参数 dw2.局部变量 A, 整数型, 静态 A = A + 1.如果真 (A % 1000 = 0)&&&&调试输出 (A, wTimerID, msg, dwUser, dwl, dw2)&&&&.如果真 (A ≥ 5000)&&&#39; 如果达到5000毫秒关闭定时器&&&&&&&&timeKillEvent (定时器句柄)&&&&.如果真结束 .如果真结束返回 (0)
.版本 2 .DLL命令 timeGetDevCaps, 整数型, &winmm.dll&&&&&.参数 TIMECAPS, TIMECAPS&&&&.参数 大小 .DLL命令 timeBeginPeriod, 整数型, &winmm.dll&&&&&.参数 设置解析度, 整数型 .DLL命令 timeSetEvent, 整数型, &winmm.dll&&&&&.参数 uDelay, 整数型&&&&.参数 Uresolution, 整数型&&&&.参数 LpTimeProc, 整数型&&&&.参数 DwUser, 整数型&&&&.参数 FuEvent, 整数型, , 类型:TIME_ONESHOT&&TIME_PERIODIC
.DLL命令 timeKillEvent, , &winmm.dll&&&&&.参数 定时器句柄
以上这段代码就是设置一个1毫秒为循环的定时器,回调函数每到1000毫秒输出一下时间,到5000毫秒时终止定时器。这个过程中我把游戏关闭了,也就是时钟 延时 等命令均在10毫秒精度的情况下,这个定时器依然是1毫秒的精度。
再次感谢以上几位易友的帮助。最后汗一个,原来我的用户组一天只可以发10贴。所以昨天无法回帖了。
最后还有一个新发现,只要有一个程序调用timeSetEvent并且该程序不关闭,那么Windows全局的时钟精度都能达到1毫秒,也就是说时钟周期,延时等命令都回复1毫秒了。只要这个程序关闭Windows全局时钟精度都降为10毫秒。这么看游戏或谷歌浏览器等软件都是调用了这个函数创建的时钟,导致全局时钟精度提高,而关闭以后则恢复
学习了,不过需要这么精确的机会真是不多了
用户被禁言,该主题自动屏蔽!
最后更正一下吧,多媒体定时器不是绝对可以精确到1毫秒的。在某种情况下,精度会降低,我发现在虚拟机里比如Vmware里安装的XP SP2当给他单核CPU时他的精度会降低到1.9—3.1毫秒之间,给他双核以上时精度会达到1.9—2.1毫秒之间。但是当调用函数timeGetDevCaps取解析度时,返回的最小解析度都是1。这是什么原因未知
感谢帮助 ,输出声波我还真不会,我现在的想法只是简单的发出MIDI的声音,自己演奏主要是为了能获得实时的控制符音符等。
谢谢楼主!!!!!!!!!!!
查看完整版本: [--
Powered by
Gzip enabledJava运算精度问题求助
项目里面需要做大量的高精度运算,刚开始用double类型,后来发现用double类型计算后有些值得精确度超过了理想范围,就用了BigDecimal来计算,现在的问题是BigDecimal的运算效率比double慢几十倍,数据量大的话,慢到蛋疼。请问有没有其他解决方案?
多少位的运算?
--- 共有 5 条评论 ---
: 那要公司愿意出,我还是看看C++语法吧。算法有Java的,照着抄一下。实在搞不定,我就找上家公司的同事帮我把!谢谢了!
可以外包啊,没多少钱,就让他们给你生成个so,200块搞定
: C++我一点基础都没有
有个方案,java不擅长大数的精算,所以。。。可以考虑c++,再用java调用
算法中有一步是时间戳平方
数额不是太大就用int类型,比如微信用是int精确到分
--- 共有 1 条评论 ---
最大的计算是时间戳平方,最后一步是开方,有小数的。
+ - X ÷ 用不同的数据类型运算,可否 ? & + - 用double &乘除用bigdecimal&
--- 共有 1 条评论 ---
不行啊,不是简单的加减乘除,是相关性系数计算,时间戳和信号强度之间,多次进行平方开方之类的计算。
精度要求高就牺牲一下时间吧。提高效率可能要通过其他方式,比如计算的过程也许可以优化一下,减少一些中间变量和重复计算之类的
--- 共有 1 条评论 ---
如果找不到好的方案,也就只能这样了。
做成分布式的计算可行吗? 通过RPC进行调用,能走异步就走异步 &让性能消耗转移到别的机器上去,数据类型就选择Bigdecimal了 &
--- 共有 1 条评论 ---
1.学一学map-reduce的理论,把公式分解成小的计算任务再合并结果,小的任务可以在不同的机器上执行。
2.或许可以直接用Java8的Stream API进行改进。
--- 共有 1 条评论 ---
CS项目,不是BS项目。}

我要回帖

更多关于 评定精度的标准有 的文章

更多推荐

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

点击添加站长微信