我们在开发与科学计算相关的应用程序时,通常需要处理浮点数的显示问题。但由于IEEE754浮点数标准所固有的精度问题,给很多的情况下对于浮点数的格式化显示问题带来了困难。以下是一些与浮点数相关的使用情境中所常见的问题:
1、数据库中存储的某双精度浮点数2.02,通过程序读出后表示为2.0200000000000000,将该浮点数格式化显示到数据表现控件(如MSFlexgrid或者其他第三方grid控件)上时,如果不控制小数点后的位数,那么显示出来的数据形式不仅很不美观,也影响到用户的阅读和使用,而如果控制小数点的位数,那么到底是保留小数点后几位呢?通常的情况是难以准确确定小数点应该保留的位数,最好的情况是“原来的数字有几位小数就显示几位”;
2、有些双精度浮点数从数据库中读出后,并不是出现像1中所表示的那样,在有效数字后面加上若干多余的“0”,而是表示为多个“9”的形式,如浮点数2.3,某些情况下表示为2.2999999999999998。此时的数字表示与实现的值就存在误差了,并不是像1中那样简单的去除多余的0即可;
3、在某些Grid类的表格控件中,当用户输入一个浮点数,如“21.25”时,通过数据绑定的方式,需要再次将该数据显示到前台来,而往往此时再次显示时则变为“21.2500000000000000”了,或者是存在误差的形式如“21.2499999999999998”。此时更有理由需要能够有一种办法显示输入的浮点数的真实小数位数。
分析以上的使用情境,有一个共同的需求就是
希望找到一种浮点数格式化显示的方法
版权声明:本文为zhouzhenyan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。