【发布时间】:2010-09-10 06:10:45
【问题描述】:
当然,大多数语言都有这方面的库函数,但假设我想自己做。
假设浮点数像在 C 或 Java 程序中一样给出('f' 或 'd' 后缀除外),例如“4.2e1”、“.42e2”或简单的“42” .一般来说,我们有小数点前的“整数部分”、小数点后的“小数部分”和“指数”。这三个都是整数。
查找和处理单个数字很容易,但是如何将它们组合成 float 或 double 类型的值而不损失精度?
我正在考虑将整数部分乘以 10^n,其中 n 是小数部分的位数,然后将小数部分添加到整数部分并从指数中减去 n。例如,这有效地将4.2e1 转换为42e0。然后我可以使用pow 函数计算 10^exponent 并将结果与新的整数部分相乘。问题是,这种方法能保证始终保持最大精度吗?
对此有什么想法吗?
【问题讨论】:
标签: parsing floating-point precision