Julia中setprecision函数用法及报错解决:传入BigFloat实例出错
解决Julia中setprecision的MethodError问题
问题根源
你写的setprecision(x, 20)里,x是已经创建好的BigFloat实例,但setprecision根本不接受这种参数。看错误提示里的候选方法就明白,它只认两种调用方式:要么传BigFloat类型来修改全局精度,要么传一个函数来做局部临时精度设置。
正确用法示例
1. 全局设置BigFloat精度
如果想让之后新建的所有BigFloat都用20位精度,直接传类型即可:
setprecision(BigFloat, 20) x = big"1.23456789" # 这个x会以20位精度创建
2. 局部临时设置精度(推荐)
用do块把需要指定精度的代码包起来,不会影响全局的精度设置:
setprecision(20) do x = big"1.23456789" # 这里对x的所有运算都会用20位精度 end # 离开do块后,精度恢复成原来的全局值
3. 修改已有BigFloat的精度
要是已经有一个现成的BigFloat,想把它转换成20位精度,得重新构造实例:
x = big"1.23456789" # 用当前全局精度创建的x x_with_new_prec = setprecision(BigFloat, 20) do BigFloat(x) end
内容的提问来源于stack exchange,提问作者Tomaz
相关产品推荐
相关产品推荐

