如何在 Scilab 中打印没有百分号的复数?

How to print a complex number without percent sign in Scilab?

我试过了

a = 1+3*%i;
disp("a = "+string(a))

我得到了a = 1+%i*3,但我想要的是a = 1. + 3.i

那么Scilab中有什么方法可以打印没有百分号的复数吗?

Matlab类似,您可以通过分别包含实部和虚部来格式化输出字符串。

mprintf('%g + %gi\n', real(a) , imag(a))

但是,当虚部为负时,这看起来很丑陋。我建议写一个格式化函数:

function s = complexstring(a)
    if  imag(a)>=0 then
        s = sprintf('%g+%gi', real(a) , imag(a))
    else 
        s = sprintf('%g%gi', real(a) , imag(a))
    end
endfunction

示例:

disp('a = '+complexstring(1+3*%i))
disp('b = '+complexstring(1-3*%i))

输出:

a = 1+3i
b = 1-3i