Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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_String Parsing - Fatal编程技术网

在Java中,如何从字符串解析任何数字类型?

在Java中,如何从字符串解析任何数字类型?,java,string-parsing,Java,String Parsing,在Java中,如何从字符串解析任何数字类型 我知道像Integer.parseInt(myString)和Double.parseDouble(myString)这样的方法,但我最想要的是像Number.parseNumber(myString)这样的方法,它并不存在。我如何以另一种方式实现这种行为?(我希望解析后的数字能够“准确地”反映字符串,例如小数位数) 例如: “0”=>数字(整数子类内部) “0.0”=>编号(内部为双个子类) 此外,没有像检查小数点分隔符等丑陋之处。您可能正在寻找 请

在Java中,如何从字符串解析任何数字类型

我知道像
Integer.parseInt(myString)
Double.parseDouble(myString)
这样的方法,但我最想要的是像
Number.parseNumber(myString)
这样的方法,它并不存在。我如何以另一种方式实现这种行为?(我希望解析后的数字能够“准确地”反映字符串,例如小数位数)

例如:

“0”=>数字(整数子类内部)

“0.0”=>编号(内部为双个子类)


此外,没有像检查小数点分隔符等丑陋之处。

您可能正在寻找

请记住,数字可以用多种形式表示为字符串。e、 g.
1
是与
1.0000000
相同的数字

Number number = NumberFormat.getInstance().parse(myString);

似乎有办法

更好的方法是使用BigDecimal类

BigDecimal n = new BigDecimal("1.0");
所需值的方法

n.byteValue();  
n.intValue();  
n.shortValue();  
n.longValue();  
n.floatValue();  
n.doubleValue();

新的BigDecimal(您的字符串)
。这将为您提供一个表示字符串值的
数字。(如果你说但是我想要它作为一个
double
如果它是“0.0”,作为一个
int
如果它是“0”,我真的不明白你期望它如何工作。你想要将结果存储在什么类型的变量中?)。方法重载不允许混合返回类型。请澄清。。。Float、Double、Integer-Long等都扩展了数字超类,它是抽象的,但我仍然可以拥有这种类型的变量。我希望它返回一个内部属于这些类中任何一个的数字。您希望它使用适合的最小类型吗?例如,“1024”适合
Short
Integer
Long
。理想情况下,我猜您希望它返回
Short
。True。这并不重要,但我希望它返回最合适的子类。只返回Long和Double。不完全是您最初要求的。我在文档中没有看到这一点,但它足以满足我的需要。是的,这正是我所要求的。(注意,
parse(String)
的详细信息参考了
parse(String,ParsePosition)
的详细信息以获取更多信息。我误解了。我认为您的问题是关于任何数字的子类型,包括
biginger
bigdecimic
,因为您需要“解析后的数字,以精确地反映字符串的小数位数。”即使这是您想要的,也值得为未来的读者记录,这可能不是他们想要的(因为他们可能需要一个工厂方法,它返回的不仅仅是
Long
Double