我正在java和
中阅读以下CSV文件1191196800.681 - !AIVDM,1,1,,,13aG?N0rh20E6sjN1J=9d4<00000,0*1D
以下是我的代码,用于读取此CSV文件并将CSV文件的第1列(即字符串)转换为双精度
public class ReadCSV {
public static void main(String[] args) {
try {
BufferedReader CSVFile = new BufferedReader(new FileReader(
"C:\\example.txt"));
try {
String dataRow = CSVFile.readLine();
while (dataRow != null) {
String[] dataarray = dataRow.split("-");
String temp = dataarray[0];
double i = Double.parseDouble(temp);
System.out.println(temp);
System.out.println(i);
dataRow = CSVFile.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
当我执行代码时,我得到以下值
1191196800.681
1.191196800681E9
为什么变量“temp”和“i”的值不相同。我必须在代码中进行哪些更改才能获得以下值:
1191196800.681
1191196800.681
提前致谢。
答案 0 :(得分:7)
temp和i完全相同,只是双值以科学记数法格式化。如果您喜欢使用DecimalFormat,则可以使用不同的格式进行格式化。
答案 1 :(得分:1)
Yups vizier是正确的,你需要做的是:
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String dataRow = "1191196800.681";
String[] dataarray = dataRow.split("-");
String temp = dataarray[0];
DecimalFormat df = new DecimalFormat("#.###");
double i = Double.parseDouble(temp);
System.out.println(temp);
System.out.println(df.format(i));
}
答案 2 :(得分:0)
另一个结果是科学记数法,但是是相同的。
如果您想更改表示,可以使用String.format("%.3f", i)
,表示带有3位小数的数字