R version 3.2.0 (2015-04-16), OS Ubuntu 14.04
Recently I have encountered a very strange problem which is really annoying.
Code:
q[94]
# [1] -0.7
paste0(q[94],".dat")
# [1] "-0.699999999999999.dat"
paste0(-0.7,".dat")
# [1] "-0.7.dat"
The paste0 function just change -0.7 to -0.699999999999999. 
This problem does not only happen  at q[94] but also with the other 
elements in variable q(not all of them). But I can not figure out any patterns in this
problem. And in this case the decimals digits change is not random at different trail. The -0.7 will always be changed to -0.699999999999999. And I have suspected that the problem is related to the options("digits"=), but I have tried to change this option, without any help. Another thing is this problem also happens at my server on which I am using Cent Os 4.5 with R version 3.1.3 (2015-03-09).
Update: I have tried paste0(as.character(q[94]),".dat"), but it's not work. Even I use as.character(q) to convert the entire vector to character vector, this problem also happens.
Edit for clarify: The answers in this question Why are these numbers not equal? have given good explanations about the the floating point number. What I want to do here is just convert the numeric number to 
a character string as what I see without any unexpected results. So if
I use paste0() function what I should do?
Update: The best solution is use sprintf() function to control the digits of floating point number
 
    