![]() |
1
38
c包含两个主要函数:dtoa()将double转换为string,strtod()将string转换为double。它还包含了大量的支持函数,其中大部分是为自己实现任意精度的算术。dtoa.c声称自己的名气是让这些转换正确,而这通常只能用任意精度的算术来完成。在四种不同的取整模式下,它还具有正确的代码取整转换。 您的代码只尝试实现等效的dtoa(),因为它使用浮点进行转换,所以并不总是正确的。(更新:参见我的文章 http://www.exploringbinary.com/quick-and-dirty-floating-point-to-decimal-conversion/ 详情。 (我在博客上写了很多关于这个的文章, http://www.exploringbinary.com/ . 我最近七篇文章中有六篇是关于strtod()转换的。通读它们,看看正确地进行四舍五入转换有多复杂。) |
![]() |
2
7
生产 好的 十进制和二进制浮点表示之间的转换结果是一个相当困难的问题。
困难的主要来源是许多小数,即使是简单的小数,也不能
准确地
用二进制浮点表示——例如,
所以,转换通常涉及近似。良好的转换程序保证生成 最近的 特定(字大小或位数)约束内的可能近似值。这就是大部分复杂性的来源。
看看评论中引用的文章
(此外,更一般地说: What Every Computer Scientist Should Know About Floating Point Arithmetic ) |
![]() |
3
4
基于对它的快速浏览,相当数量的C版本正在处理多个平台,例如它看起来像是在编译器(C&AM+C++)、BITNESS、浮点实现和平台上一般可用的;
|
![]() |
4
4
我还认为dtoa.c中的代码可能更有效(独立于语言)。例如,它似乎在做一些小动作,在专家的手中,这通常意味着速度。因为速度的原因,我假设它只是使用了一个不太直观的算法。 |
![]() |
5
2
简短回答:因为
这正是调试良好的产品和NIH原型之间的区别。 |
![]() |
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 4 月前 |
![]() |
Alex · 在轻量级中同时解构和不解构变量 5 月前 |
![]() |
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 5 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 5 月前 |
![]() |
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 5 月前 |