计算浮点数的位数

时间:2015-07-29 02:46:07

标签: c performance math floating-point digits

是否有任何有效的方法(不将float转换为字符串)以获得浮点数组成的位数(与其长度和精度无关)?

通过这种方式,我可以通过将float乘以它所包含的位数来实现一个相当好的,可移植的,无问题的函数来进行比较/调节。

1 个答案:

答案 0 :(得分:3)

问:有没有有效的方法来获得浮点数的位数?
A:我对此表示怀疑。

每个有限的FP编号完全,但可能不是人们认为的确切值。

由于double x = 0.53的典型binary64实施, x.5300000000000000266453525910037569701671600341796875值:double x = 0.1,52位数 x.1000000000000000055511151231257827021181583404541015625值:double 55位数 与数学0.1最接近的.09999999999999999167332731531132594682276248931884765625DBL_MAX,其中包含56位数字。

17976931348623158...:十进制,通常以6728515625.结尾的约300位DBL_MIN

0.000000(~300 zeros) 22250738585072014... (maybe about 700 more digits):通常为>, >=, ==

FP数的比较无需以十进制表示法确定数字化的数量。要比较FP编号,请使用常用关系运算符@RequestMapping("/employee/edit") public ModelAndView editEmp(@RequestParam int emp_Id, @RequestParam boolean flag, @ModelAttribute Employee emp) { emp = empService.getEmp(emp_Id); List<String> cityList = new ArrayList<String>(); cityList.add("Hyderabad"); cityList.add("Secunderabad"); Map<String, Object> map = new HashMap<String, Object>(); map.put("cityList", cityList); map.put("emp", emp); return new ModelAndView("employee", "map", map); }

这些值是说明性的。 YMMV。