浮点数处理方法、装置、计算机设备及存储介质与流程

文档序号:35548686发布日期:2023-09-23 21:59阅读:38来源:国知局

本发明涉及数据处理,具体涉及浮点数处理方法、装置、计算机设备及存储介质。


背景技术:

1、浮点数在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。利用浮点进行运算,称为浮点计算。

2、在实际应用中,工程师使用clang编译器进行工作时,常常会遇到浮点数处理,在clang编译器的debug版本设计中,如果浮点数中小数点后数字太多,就会触发powerof5函数中的检查,这个检查对浮点数的精度有要求,如果浮点数的精度不满足要求,clang编译器就会崩溃。

3、在clang编译器的release版本中,如果编译有长浮点数的源代码,clang编译器会取消检查,编译进度在apint类的tcshiftleft函数中陷入耗时极长的循环中,在工程师的视角则表现为编译器卡死。


技术实现思路

1、有鉴于此,本发明提供了一种浮点数处理方法、装置、计算机设备及存储介质,以解决相关技术中由于浮点数过长,在使用clang编译器处理浮点数时,导致clang编译器崩溃或卡死的问题。

2、第一方面,本发明提供了一种浮点数处理方法,所述方法包括:当检测到浮点数时,对所述浮点数进行解析,得到所述浮点数在代码中对应的字符串;对所述字符串进行解析,得到解析结果;若所述解析结果为第一预设解析结果,确定所述字符串的精度是否在第一精度范围内;若所述字符串的精度不在所述第一精度范围内,基于所述第一精度范围对所述字符串进行精度舍入处理。

3、本发明提供的浮点数处理方法,通过对所述字符串进行解析,可以判断字符串的类型,提高对字符串的处理效果;通过确定所述字符串的精度是否在第一精度范围内,对所述字符串进行精度舍入处理,尽可能保证了浮点数的精度,同时避免触发clang编译器的bug,使得clang编译器正常运行。

4、在一种可选的实施方式中,所述对所述字符串进行解析,得到解析结果,包括:对所述字符串的符号、整数部分、小数部分和指数部分进行解析,得到有效数字位数、最大指数和最小指数;基于所述有效数字位数、最大指数和最小指数,确定所述字符串是否属于特殊情况;若所述字符串属于非特殊情况,得到解析结果为所述第一预设解析结果;若所述字符串属于特殊情况,得到解析结果为第二预设解析结果,所述特殊情况包括:边缘情况型、最大溢出情况型、最小溢出情况型及语义环境溢出情况型中的至少一种。

5、本发明提供的浮点数处理方法,通过对所述字符串的符号、整数部分、小数部分和指数部分进行解析,得到有效数字位数、最大指数和最小指数,以及确定所述字符串是否属于特殊情况,可以有效地识别和处理特殊情况的字符串,提高浮点数处理效率。

6、在一种可选的实施方式中,所述若所述解析结果为第一预设解析结果,确定所述字符串的精度是否在第一精度范围内,包括:获取所述字符串的最小精度,基于所述字符串的最小精度,计算所述字符串的实际数值;基于所述实际数值,确定所述字符串的精度是否在所述第一精度范围内。

7、本发明提供的浮点数处理方法,通过字符串的最小精度,计算所述字符串的实际数值,确定所述字符串的精度是否在所述第一精度范围内,提高了字符串的精度判断的准确性。避免由于字符串精度过小造成后续处理过程中出现计算不准确的问题,以及避免由于字符串精度过大,导致clang编译器崩溃或卡住的问题。

8、在一种可选的实施方式中,所述若所述字符串的精度不在所述第一精度范围内,基于所述第一精度范围对所述字符串进行精度舍入处理,包括:若所述字符串的精度大于所述第一精度范围的最大值,读取所述字符串的最后一位;对所述字符串的最后一位进行舍去处理;确定舍去处理后的所述字符串的精度是否大于所述第一精度范围的最大值;若舍去处理后的所述字符串的精度仍大于所述第一精度范围的最大值,继续读取所述字符串的最后一位,并对所述字符串的最后一位进行舍去处理;直至舍去处理后的字符串的精度落在所述第一精度范围内,处理结束。

9、本发明提供的浮点数处理方法,通过从浮点数小数点后最后一位数字开始向前截取,直至舍去处理后的字符串的精度落在所述第一精度范围内,达到了尽可能保证浮点数的精度和避免触发clang编译器bug的效果。

10、在一种可选的实施方式中,所述若所述字符串的精度超出所述第一精度范围,基于所述第一精度范围对所述字符串进行精度舍入处理,包括:若所述字符串的精度小于所述第一精度范围的最小值,对所述字符串的有效数字和指数进行补充处理;当补充后的所述字符串的精度落在所述第一精度范围内时,处理结束。

11、本发明提供的浮点数处理方法,通过对所述字符串的有效数字和指数进行补充处理,使得补充后的所述字符串的精度落在所述第一精度范围内,提高后续浮点数处理过程中的运算准确性。

12、在一种可选的实施方式中,在对所述字符串进行解析之前,所述方法还包括:对所述字符串进行异常检测,得到异常检测结果,所述异常检测包括合法检测和零字符串检测;若所述字符串为合法的非零字符串,得到解析结果为所述第一预设检测结果;若所述字符串为非法字符串,得到解析结果为第二预设检测结果;若所述字符串为合法的零字符串,得到解析结果为第三预设检测结果;若所述异常检测结果为第一预设检测结果,则执行对所述字符串进行解析的步骤。

13、本发明提供的浮点数处理方法,通过对所述字符串进行异常检测,有效避免非法字符串和零字符串干扰浮点数处理,提高clang编译器的处理效率。

14、在一种可选的实施方式中,所述方法还包括:若所述解析结果为第二预设解析结果,基于所述特殊情况的类型调用对应的工具对所述字符串进行特殊情况处理。

15、本发明提供的浮点数处理方法,通过调用对应的工具对所述字符串进行特殊情况处理,避免了边缘情况型字符串、最大溢出情况型字符串、最小溢出情况型字符串及语义环境溢出情况型字符串对后续的数据处理造成影响。

16、第二方面,本发明提供了一种浮点数处理装置,所述装置包括:浮点数解析模块,用于当检测到浮点数时,对所述浮点数进行解析,得到所述浮点数在代码中对应的字符串;字符串解析模块,用于对所述字符串进行解析,得到解析结果;精度确定模块,用于若所述解析结果为第一预设解析结果,确定所述字符串的精度是否在第一精度范围内;精度处理模块,用于若所述字符串的精度不在所述第一精度范围内,基于所述第一精度范围对所述字符串进行精度舍入处理。

17、第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的浮点数处理方法。

18、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的浮点数处理方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1