请问输出如何设置保留有效数字

using LinearAlgebra
using SymPy

@vars x
p=x^9-18x^8+144x^7-672x^6+2016x^5-4032x^4+5376x^3-4608x^2+2304x-512
p1=diff(p,x)

x0=1.5
X=factor(x-p//p1)

k=1

while k<60
    global k+=1
    global x0
    xk=X(x=>x0)
    deta=xk-x0
    print("xk = $xk; x0 = $x0 ; k = $k ; prec = $deta \n")
    x0=xk
end

julia3

输出结果位数比较多,尤其当我用big类型时位数更多,请问有没有类似C或GO语言控制输出有效数字的那种格式或函数??

import Printf.@printf
@printf "%.2f" 2.222" ;2.22

这样?

谢谢!!

请问如何设置打印输出矩阵,使矩阵的每一个元素都保持给定的有效数字输出呢?

可以这样,定义一个函数format_print(fmt,num) = @printf(fmt,num),
然后foreach(format_print,matrix),但是定义函数的时候我遇到了点问题,我需要去问一问

julia> format(fmt,num) = @printf(fmt,num)
ERROR: LoadError: ArgumentError: @printf: first or second argument must be a format string
Stacktrace:
 [1] @printf(::LineNumberNode, ::Module, ::Symbol, ::Vararg{Any,N} where N) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Printf/src/Printf.jl:41
in expression starting at REPL[39]:1

你这个是保留两位小数吧,只是保留几位小数的话,用 round 就是了。比如

println(round.(A,digits=3))

但是要保留几位有效数字的话,也许需要写一个自定义的打印函数,因为对于某些数需要使用科学计数法。

1 个赞

对于矩阵或数组的格式化输出,我刚刚学到了一招,使用PrettyTables这个包,结果看起来还是不错的

谢谢!十分受用!