停止打印大量的零(不是科学记数法)

Jas*_*ase 10 printing numbers r scientific-notation digits

我想要实现的是让所有打印的数字以最大7数字显示.以下是我要打印的示例:

0.000000(相对于实际数字0.000000000029481 ......)

0.299180(相对于实际数字是0.299180291884922 ......)

通过使用options(scipen=99999)和,我已经成功使用了后面的数字options(digits=6).但是,前一个示例将始终打印大量的零后跟五个非零数字.如何阻止这种情况发生并达到我想要的效果我也不想要科学记谱法.

我希望这适用于每个上下文中的所有打印数字.例如,如果我有一些矩阵,调用它A,我打印这个矩阵,我希望每个元素只有6-7位数.我希望每个上下文中的每个打印都能自动生成; 就像使用一样,options(digits=6)options(scipen=99999)使其适用于每个上下文.

Rob*_*der 10

您可以为要打印的类型定义新的打印方法.例如,如果您的所有数字都是双打,则可以创建

print.double=function(x){sprintf("%.6f", x)}
Run Code Online (Sandbox Code Playgroud)

现在,当您打印双精度(或双精度矢量)时,print.double()将调用该函数而不是print.default().

您可能必须创建类似的功能print.integer(),print.complex()等等,具体取决于您需要打印的类型.

要返回默认打印方法,只需删除该功能即可print.double().


Kev*_*hey 3

你所有的数字都<1吗?你可以尝试一个简单的sprintf( "%.6f", x ). 否则,您可以尝试sprintf根据位数将内容包装起来;检查?sprintf其他详细信息。