作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文件,它代表数百万个数字(如29.879.999
)和双数(如28.09
)。我正在尝试使用 NumberFormat
解析它们,并将它们全部(整数和 double )转换为 double
。这是我写的:
for (String[] entry : data) {
NumberFormat nf = NumberFormat.getInstance();
Number value = nf.parse(entry[4]).doubleValue();
System.out.println("closingvalue: "+value);
}
结果是:
closingvalue 2925.0
closingvalue 2.9879999E7
closingvalue 2809.0
closingvalue 2.7219999E7
closingvalue 2.5969999E7
closingvalue 2491.0
closingvalue 2635.0
closingvalue 2591.0
输入文件是这样的:
Date;Open;High;Low;Close;Log Return
2/1/2009;31.190.001;31.639.999;30.469.999;31.35;-
5/1/2009;30.73;30.77;29.08;29.25;-0.0693
6/1/2009;29.790.001;30.42;29.51;29.879.999;0.0213
7/1/2009;29.15;29.40;28.00;28.09;-0.0618
8/1/2009;27.90;27.950.001;26.860.001;27.219.999;-0.0315
我想将它们全部解析为 double
就像 28.09
甚至数百万。感谢任何帮助。谢谢!
最佳答案
假设以下是有效格式
contains decimals
0.<any number>
-0.<any number>
1.234.567.89 (last third digit is ".")
all others are integers.
那么您所要做的就是将 3 位小数条件更改为“,”。这会将您的号码更改为
0,<any number>
-0,<any number>
1.234.567,89 (last third digit is now ",")
并使用 Locale.GERMANY 进行解析
NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY);
Double parsedNumber = nf.parse(value[4]).doubleValue();
编辑:这就是我转换小数的方法。
String testString = value[4];
if(testString.size() >= 3){ //must be at least 3 digits
int last3rdPosition = testString.size() - 3;
if(testString.charAt(last3rdPosition) == '.'){
//check if the last third char is "."
//handle cases like 31.35 (change it to 31,35)
testString.setChar(last3rdPosition, ',');
} else if (testString.charAt(0) == '0'
&& testString.charAt(1) == '.'){
//handle cases like 0.0213 (change it to 0,0213)
testString.setChar(1, ',')
}else if (testString.charAt(0) == '-'
&& testString.charAt(1) == '0'
&& testString.charAt(2) == '.'){
//handle cases like -0.0315 (change it to -0,0315)
testString.setChar(2, ',')
}
}
// do converting as per normal using Locale.GERMANY
// Locale.GERMANY will treat "." as the thousands separator
// and "," as the decimal separator
NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY);
Double parsedNumber = nf.parse(testString).doubleValue();
关于java - 解析双数和百万,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301262/
我正在尝试使用内联汇编进行试验,我正在尝试在内联汇编中添加十进制数(不,不是整数)。问题是,当我调用以下函数时: inline double ADD(double num1, double num2)
我有一个名为“a”的数据类型为 double 的数字,当这个数字小于 0.5 时,说b = 1 - a没有错误。但是当 a > 0.5 时,我说b = 1 - a代码中的该点存在错误(执行该特定行之前
我需要将双数添加到 ol 列表中。一个例子是: 欢迎访客1.1.介绍1.2.更多信息1.3.更多信息1.4.更多信息1.5.更多信息 另一个OL2.1.更多信息2.2.更多信息2.3.更多信息 我知道
我正在尝试将一些代码从 C++ 转换为 JavaScript,但我对 int、doubles、NaN 和解析 float 感到非常困惑。我想!? Z = T - 14 - (1); while (Z
我是一名优秀的程序员,十分优秀!