Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用有效字符分析java中的浮点_Java_Performance_Parsing - Fatal编程技术网

用有效字符分析java中的浮点

用有效字符分析java中的浮点,java,performance,parsing,Java,Performance,Parsing,我试图确保字符串在java中是有效的浮点,并且不想使用正则表达式。我的mid首先要做的就是使用Float.valueOf(String)与Float.parseFloat(String)等效。 这些函数不会抛出NumberFormatException 我知道这些可能是java中的有效值。但是当我想与其他环境和语言交流时,这些都是无效的 System.out.println(Float.parseFloat("4.f")); System.out.println(Float.parseFloa

我试图确保字符串在java中是有效的浮点,并且不想使用正则表达式。我的mid首先要做的就是使用
Float.valueOf(String)
Float.parseFloat(String)
等效。 这些函数不会抛出
NumberFormatException

我知道这些可能是java中的有效值。但是当我想与其他环境和语言交流时,这些都是无效的

System.out.println(Float.parseFloat("4.f")); 
System.out.println(Float.parseFloat("2.d")); 
System.out.println(Float.parseFloat("0.45d")); 
System.out.println(Float.parseFloat("0.3f")); 
System.out.println(Float.parseFloat("0d")); 
System.out.println(Float.parseFloat("0d")); 
结果:

4.0
2.0
0.45
0.3
0.0
0.0
我知道我可以编写自己的解析器,但影响性能的是循环。有什么想法吗


提前感谢…

我将使用@holtc解决方案,将原始字符串转换为浮点值(这样您就知道它在Java中是有效的),然后返回到字符串以与其他系统通信:

String originalString = "4.f";
Float floatNum = Float.parseFloat(originalString);
String newString = floatNum.toString();
实际上,您应该注意另一个细节,locale,因为其他系统可能在其他地方,并且具有不同的浮动分隔符。例如,在巴西,我们使用逗号作为小数点:

String originalString = "4.f";
Float floatNum = Float.parseFloat(originalString);
String newString = String.format(new Locale("pt", "BR"), "%.2f", floatNum);

您可以像以前那样转换为字符串,然后再转换回浮点值“valid”的定义是什么?如果“valid”java值对您的应用程序无效?如果这些值在其他语言中无效,那么为什么java抛出错误?唯一的方法是在解析之前检查字符串中的字符。@BheshGurung OP抱怨Java不会对后缀为
f
d
的值抛出错误,因为“其他环境和语言”不会接受。“我不想使用正则表达式”为什么??这将比解析更快,并且您可以将其自定义为任何语法子集。Gustavo感谢您的解决方案,但在我的示例中,我需要将浮点值作为字符串参数传递给批处理,这会引发异常。语言环境不是我的问题。很乐意帮忙!如果您不担心语言环境,那么当您获得一个新字符串时,任何代码段都应该适合您,该字符串的浮点数格式应该在任何其他系统中都是有效的。