Qqw*_*qwy 8 floating-point precision erlang elixir
Erlang(以及扩展名Elixir)支持浮点数.
一些可能的浮点数:
1.23451.0e101.0e-42Erlang支持NaN(nan.在Erlang中)(但我还没有发现一个输出nan自身的方法).
但是,Erlang没有支持Infinity.虽然像IEEE-754这样的通用标准表明,Infinity在做某事时应该返回1.0/0.0,而Erlang会抛出一个bad arithmetic error.
尝试制作"太大"的浮子时也会发生同样的情况1.0e400.
这背后可能有一些(历史?)原因.
查看./erts/emulator/sys/unix/sys_float.c
在我看来,Erlang正在使用底层的strtod实现转换为"标准"C浮点数.
在大多数unix系统上,在创建Erlang时,浮点没有实现到该标准,但是生成Infinity的值会产生fpe信号错误.
小智 5
Erlang 用浮点数(不完全是 IEEE 754 binary64)做各种“坏”的事情:将 -0 和 +0 合并为 0,不做 +-SNaNs、+-QNaNs、+-denormals 或 +-infinity。
对于具有精确错误处理的实际科学计算,可能值得使用另一种语言Port进行 RPC 或编写 C/C++ NIF。
参考:http : //steve.hollasch.net/cgindex/coding/ieeefloat.html
更新:我在这里写了一个简单的 ieee754 模块,它对 binary64 浮点数进行分类并转换那些 Erlang 支持的浮点数。
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |