Julia错误地使用科学符号导入CSV

Julia错误地使用科学符号导入CSV,csv,julia,Csv,Julia,我使用JuliaCSV包和DataFrames作为接收器。我的csv中的某些数字读取错误。这些数字是用科学符号表示的 此行: -5.871153289887625082e-01,8.095032986136727615e-01,9.900000000000006573e-01,9.900000000000006573e-01,-9.866066418838319585e-01,-3.138907529596844714e+00,-5.129218106887371675e+00,-4.80391

我使用Julia
CSV
包和
DataFrames
作为接收器。我的csv中的某些数字读取错误。这些数字是用科学符号表示的

此行:

-5.871153289887625082e-01,8.095032986136727615e-01,9.900000000000006573e-01,9.900000000000006573e-01,-9.866066418838319585e-01,-3.138907529596844714e+00,-5.129218106887371675e+00,-4.803915800699462224e+00
结果:

-0.587115   │ 0.809503  │ -0.854674 │ -0.854674 │ 0.858068  │ -3.13891  │ -5.12922 │ -4.80392 
注意第3栏和第4栏。突然之间,他们是一个完全不同的数字


这里发生了什么事?

仅供参考。问题现已解决:

julia> s = """-5.871153289887625082e-01,8.095032986136727615e-01,9.900000000000006573e-01,9.900000000000006573e-01,-9.866066418838319585e-01,-3.138907529596844714e+00,-5.129218106887371675e+00,-4.803915800699462224e+00"""
"-5.871153289887625082e-01,8.095032986136727615e-01,9.900000000000006573e-01,9.900000000000006573e-01,-9.866066418838319585e-01,-3.138907529596844714e+00,-5.129218106887371675e+00,-4.803915800699462224e+00"

julia> CSV.read(IOBuffer(s), header=false)
1×8 DataFrame
│ Row │ Column1   │ Column2  │ Column3  │ Column4  │ Column5   │ Column6  │ Column7  │ Column8  │
│     │ Float64⍰  │ Float64⍰ │ Float64⍰ │ Float64⍰ │ Float64⍰  │ Float64⍰ │ Float64⍰ │ Float64⍰ │
├─────┼───────────┼──────────┼──────────┼──────────┼───────────┼──────────┼──────────┼──────────┤
│ 1   │ -0.587115 │ 0.809503 │ 0.99     │ 0.99     │ -0.986607 │ -3.13891 │ -5.12922 │ -4.80392 │

AFAIK CSV.jl在内部使用一个整数来表示小数部分,似乎很长的小数部分溢出了它。可能您可以将问题提交到CSV.jl。如果您将CSV包中float.jl的第108行更改为
it=BigInt
,作为一种解决方法,所有这些都应该可以正常工作(但性能会降低)。也就是说,错误已确认,即使
types
关键字设置为Float64。设置为String并稍后解析为Float是一种有效的解决方法。(或者,使用内置的
readcsv
,它似乎可以很好地处理相同的数据)我将在github中提交一份报告