作者:西红柿 | 来源:互联网 | 2022-12-07 01:43
我有一个恒定的价值:
M_LN2 = 0.693147180559945309417
我试着把它存储为:
M_LN2 = BigFloat(0.693147180559945309417)
结果似乎是添加了太多的额外数字:
6.931471805599452862267639829951804131269454956054687500000000000000000000000000e-01
我试过了:
M_LN2 = Float64(0.693147180559945309417)
但它正在削减价值:
0.6931471805599453
你能建议初始化常量的正确方法是什么?谢谢!
1> phipsgabler..:
在你写的时候BigFloat(0.693147180559945309417)
,Julia构造了一个Float64
文字值的值0.69314718055994530941
,它已经执行了一些截断:
julia> 0.69314718055994530941
0.6931471805599453
然后将结果值作为参数传递给BigFloat
函数.为避免这种情况,您必须避免解析数字文字.最方便的方法是big
字符串宏:
julia> big"0.693147180559945309417"
6.931471805599453094169999999999999999999999999999999999999999999999999999999979e-01
其中内部可能只是parse(BigFloat, "0.693147180559945309417")
"手动"解析给定字符串中的值,而不需要从Julia中解释.