The negative umber is a new one for me. But I am going to guess that you could create a schema.ini file to address it.
Take a look at this link: http://kb.tableausoftware.com/articles/knowledgebase/jet-incorrect-data-type-issues
I hope this helps. I did confirm I see the same results on my end, so there is definitely an issue at play. It is NOT a Tableau issue, but rather an issue with the JET engine This will be going away in version 8.2, I believe, and a lot of folks are anxiously awaiting this change.
The packaged workbook I attached was generated by putting the data into a text file and importing it as such, which is apparently using the JET engine underneath. If instead I paste the data directly into Tableau from the clipboard, which creates a string dimension, then convert it either using FLOAT or Convert DataType, the result is correct.
However, our original use case actually uses the API to write directly an extract file by using Row.SetString command from code. In that case the result has the same problem. I would not expect JET to be involved here, but perhaps I am mistaken?
Do you really need 19digits after decimal point? For data visualization tasks I feel that 4 or 5 digits are enough, so round the number to be able to appropriate use it in your particular context.