我想将我得到的一些数字转换为双打,但这些数字不是美国标准语言环境,而是另一个数字.我怎样才能做到这一点?
我知道这个问题的变种频繁之前(见已被要求在这里和这里的实例),但是这不是一个确切的重复.
我想检查a String是否是数字,如果是,我想将其存储为double.有几种方法可以做到这一点,但所有这些方法似乎都不适合我的目的.
一种解决方案是使用Double.parseDouble(s)或类似new BigDecimal(s).但是,如果存在逗号,则这些解决方案不起作用(因此"1,234"会导致异常).我当然可以使用这些技术之前去掉所有的逗号,但这似乎不会造成在其他语言环境的问题负载.
我查看了Apache Commons NumberUtils.isNumber(s),但是它遇到了同样的逗号问题.
我认为NumberFormat还是DecimalFormat,但这些似乎过于宽松.例如,"1A"被格式化为"1"而不是表示它不是数字.此外,像"127.0.0.1"这样的东西将被计为数字127而不是表示它不是数字.
我觉得我的要求不是那么奇特,我是第一个这样做,但没有一个解决方案完全符合我的要求.我想即使我不确切知道我需要什么(否则我可以编写自己的解析器),但我知道上述解决方案因指示的原因不起作用.是否存在任何解决方案,或者我是否需要准确弄清楚我需要什么并为其编写自己的代码?
我有一个有数字的字符串.我必须解析这个字符串并将这些数字存储在int,float等中
String str = "100,2.0,-100,19.99,0";
Run Code Online (Sandbox Code Playgroud)
我可以做到这一点Integer.parseInt()和Float.parseFloat()分裂后.但我不能为负数做这件事.它抛出异常java.lang.NumberFormatException.搜索网络后,我找不到任何解决此问题的方法.
那么如何使用j2me api set解析字符串中的负整数并存储到int中?
在我的应用程序中,我编辑了文本框,用户输入的小数值是应用程序用来运行计算的.
其他区域设置中的某些用户在输入数字时会报告问题,例如输入值和显示不同的值.我试图通过使用此方法从editText获取值来解决此问题:
public double stringToDouble(String s){
if (nf == null){
nf = NumberFormat.getInstance(Locale.US);
}
try {
return nf.parse(s).doubleValue();
} catch (ParseException e) {
e.printStackTrace();
return 0.0;
}
}
Run Code Online (Sandbox Code Playgroud)
和
val = stringToDouble(et.getText().toString());
Run Code Online (Sandbox Code Playgroud)
但显然这仍然不适合某些人.
斯洛文尼亚的一位用户报告说,如果可行的话
- 设置; 语言和键盘:
- 选择语言:设为英语(斯洛文尼亚)
- 触摸输入:只设置为英语和任何语言(我的情况斯洛文尼亚)
- 双语预测:关闭
- 文字预测:关闭
获取double值的正确方法是什么?谢谢
Android:西班牙语:解析浮点值时出现问题:App崩溃步骤:
1.将语言设为app中的西班牙语
2.将一些浮点值格式化为单个小数
3.将格式化的值再次浮动
应用程序崩溃.
示例代码如下:
如果您对此有任何疑问,请帮忙.
TextView textView = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textview);
float value = 3.456789f;
setLocale("es", this);//Set App language as Spanish
String parsedString = String.format("%.1f", value); // format the float value to single precision
float parsedValueFloat = Float.parseFloat(parsedString); // parse the value again to float.(APP Crashesh here)
textView.setText(parsedValueFloat+"");
}
public static void setLocale(String languageCode, Context ctx) {
Locale locale = new Locale(languageCode);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale …Run Code Online (Sandbox Code Playgroud) 我在Java中解析"1,234.56"时遇到了问题,类似的问题建议在数字格式中使用法语语言环境,但它正在错误地解析结果.这是我有的:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234.56");
System.out.println(number.doubleValue()); // Should get 1234.56, got 1.234 instead
Number number = format.parse("1,234,567.89");
System.out.println(number.doubleValue()); // Should get 1234567.89
Run Code Online (Sandbox Code Playgroud) 我从用户那里获得输入并逐行读取.然后我使用split方法来标记输入.像这样:
Scanner input=new Scanner(System.in);
String input1=input.nextLine();
String[] tokens=input1.split(" ");
method1(Double.parseDouble(tokens[0]),Double.parseDouble(tokens[1]));
Run Code Online (Sandbox Code Playgroud)
这是method1:
public static void method1 (double a, double b) {
System.out.println(a);
System.out.println(b);
}
Run Code Online (Sandbox Code Playgroud)
当我声明3.5和5.3输出时;
3.5
5.3
Run Code Online (Sandbox Code Playgroud)
这里没有问题,但如果我声明3,5和5,3我的代码在下面给出错误;
Exception in thread "main" java.lang.NumberFormatException: For input string: "3,5"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
java ×5
android ×2
double ×2
localization ×2
string ×2
bigdecimal ×1
java-me ×1
locale ×1
numbers ×1
parsing ×1