数字和字符串之间的R转换

时间:2015-11-11 18:46:05

标签: r

因此,以下代码生成以下输出:

> as.character(10^-14)

"0.00000000000001"

但是,此替代代码会生成此替代输出:

> as.character(123123 + 10^-14)

"123123"

我的问题是,有没有办法强制R在添加时保持增加的精度(即我想要"123123.00000000000001"的输出?)

1 个答案:

答案 0 :(得分:1)

请勿使用as.character(x)并使用sprintf(f,x)代替,因为它允许您为结果字符串指定任意格式。

您的具体示例:

sprintf( "%.14f", 123123 + 10^-14 )

但是,请注意sprintf只负责字符串表示的格式化,并且无法控制从浮点值转换后的信息丢失:在上面的行中,第14个小数位的1位数得到如果输入数字的大小太大则丢失(比较1 + 10 ^ -14与123123 + 10 ^ -14的输出),但这发生在sprintf的任何格式化之前(并且也影响as.character,因为你已经看过了。)