因此,以下代码生成以下输出:
> as.character(10^-14)
"0.00000000000001"
但是,此替代代码会生成此替代输出:
> as.character(123123 + 10^-14)
"123123"
我的问题是,有没有办法强制R在添加时保持增加的精度(即我想要"123123.00000000000001"
的输出?)
答案 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,因为你已经看过了。)