题目
编写程序,计算圆周率 $\pi$ 与 $1/3$ 的值,依次切换控制台格式模式为 <code>format short</code>(默认4位小数)、<code>format long</code>(高精度15位小数)以及 <code>format rat</code>(有理数近似分数表示),对比输出效果。
输入格式:无需外部输入。
输出格式:分别在三种格式模式下打印 $\pi$ 与 $1/3$ 的控制台文本表示。
数据范围与约定:控制台显示策略。
思路与算法
1. format 指令的作用域format 只改变数值在控制台的显示渲染方式,绝对不会截断或更改底层 64 位双精度的二进制浮点存储精度。
2. 常用 format 参数format short:固定 5 位有效数字(小数保留 4 位);format long:16 位有效数字(小数保留 15 位);format rat:连分数展开求得的最佳有理分数近似。
3. 测试完毕复原
良好编程规范是在演示完特殊 format 后,将环境格式复原为 format default,避免污染后续调用。
完整程序
% Octave / MATLAB 第10题:控制台显示格式切换
val_pi = pi;
val_third = 1 / 3;
% 1. 默认 short 模式 (4 位小数)
format short;
fprintf("--- format short (默认) ---\n");
disp(["pi = ", num2str(val_pi)]);
disp(["1/3 = ", num2str(val_third)]);
% 2. long 模式 (15 位小数)
format long;
fprintf("\n--- format long (高精) ---\n");
disp(["pi = ", num2str(val_pi, "%.15f")]);
disp(["1/3 = ", num2str(val_third, "%.15f")]);
% 3. rat 模式 (有理数逼近)
fprintf("\n--- rat 分数表示 ---\n");
[n_pi, d_pi] = rat(val_pi);
[n_third, d_third] = rat(val_third);
fprintf("pi 约等于 %d/%d\n", n_pi, d_pi);
fprintf("1/3 严格等于 %d/%d\n", n_third, d_third);
% 复原默认格式
format default;运行示例
输出:
--- format short (默认) ---
pi = 3.1416
1/3 = 0.33333
--- format long (高精) ---
pi = 3.141592653589793
1/3 = 0.333333333333333
--- rat 分数表示 ---
pi 约等于 355/113
1/3 严格等于 1/3