gpt4 book ai didi

java - Java 中的 atof() ?没有异常抛出

转载 作者:行者123 更新时间:2023-12-01 17:19:17 25 4
gpt4 key购买 nike

我想解析格式为“5.3984.234”的字符串并将其转换为 float 。显然 float 将是 5.3984

在 C 中,使用 atof() 将给出此结果,但在 Java 中,Float.parseFloat() 和 Float.valueOf() 都会抛出异常。

我不希望函数抛出异常,并希望获得与 atof() 相同的功能我该如何做到这一点?

注意:我不能保证字符串中总是有两个句点。有时可能是 48328.458,有时可能是 4823.5482.4822,甚至是 42894.4383.8349.439

最佳答案

嗯,首先也是最重要的是 atof() 可以返回未定义的行为,所以我不想完全模拟它;)请参阅:

atof() with non-nullterminated string

我的意思是。

无论如何,为了解决使用 Java 的问题,我会使用 String.substring 方法来解决它,您只需解析字符串直到第二个“.”,然后使用它执行您想要的任何功能。尽管如此,如果你不介意在第二个“.”之后扔掉所有东西。它变得容易多了。

这里有一些代码可以使我提到的功能发挥作用:

public class main{
public static void main(String[] args)
{
String test = "5.3984";
int tempIndex = 0;

tempIndex = test.indexOf('.');
tempIndex = test.indexOf('.', tempIndex + 1 );
if (tempIndex != -1)
{
System.out.println("multiple periods: " + Float.parseFloat(test.substring(0, tempIndex)));
}
else
{
System.out.println("Only one Period: :" + Float.parseFloat(test));
}
}

现在,这可能不是 super 强大,但它似乎工作正常。

关于java - Java 中的 atof() ?没有异常抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com