如何在 Matlab 中显示没有科学计数法的长数字?
Posted
技术标签:
【中文标题】如何在 Matlab 中显示没有科学计数法的长数字?【英文标题】:How to display long numbers without scientific notation in Matlab? 【发布时间】:2018-09-17 15:33:57 【问题描述】:如何在Matlab中显示没有科学计数法的长数字?
format long g
没有帮助
>> A=single([1456267123000 16.5])
A =
1×2 single row vector
1.456267e+12 16.5
>> format long g
>> A
A =
1×2 single row vector
1.456267e+12 16.5
我希望这样的输出
1456267123000 16.5
【问题讨论】:
你能举个例子说明你想要得到什么输出吗?您希望它在所有输出中或仅在表(或自定义类)中显示吗?如果它是自定义类,您应该能够覆盖其disp
(或display
,我不记得了)函数以使用所需格式的sprintf
...
表格是 1x2 行向量,不是自定义类。它包含数字。我不想在没有指数(科学)符号的情况下显示所有数字。
【参考方案1】:
如果您可以只显示两位小数,您可以使用format bank
:
>> format long
>> pi*1e6
ans =
3.141592653589793e+06
>> pi*1e25
ans =
3.141592653589793e+25
>> format bank
>> pi*1e6
ans =
3141592.65
>> pi*1e25
ans =
31415926535897934939029504.00
或者使用更明确和灵活的sprintf
方法:
>> sprintf('%.7f', pi*1e6) % fixed-point, 7 decimals
>> disp(sprintf('%.7f', pi*1e6))
3141592.6535898
如果您只想显示结果也可以使用,如@Dev-iL 所述,
>> fprintf(1, '%.7f\n', pi*1e6) % fixed-point, 7 decimals
3141592.6535898
甚至
>> fprintf('%.7f\n', pi*1e6) % fixed-point, 7 decimals
3141592.6535898
【讨论】:
可以sprintf
打印矩阵吗?
@Dims 可以打印行向量:sprintf('%.7f ', [pi*1e6 1e9])
。对于矩阵,您需要进行一些手动格式化【参考方案2】:
您可能想尝试mat2str
,它允许您指定所需的精度位数,并且也适用于矩阵。例如:
>> mat2str(pi, 30)
ans =
'3.14159265358979311599796346854'
>> mat2str([1456267123000 16.5], 20)
ans =
'[1456267123000 16.5]'
【讨论】:
以上是关于如何在 Matlab 中显示没有科学计数法的长数字?的主要内容,如果未能解决你的问题,请参考以下文章