Java将字符串转换为数字,仅在需要时浮点数?

时间:2012-12-29 19:36:27

标签: java

我想在Java中将字符串转换为数字。我已经尝试了两种方法,但两者都用整数工作不好,添加了一个不需要的浮点:“1”> 1.0(当我想要“1”> 1和“1.5”> 1.5时)。我找到了几种将字符串转换为数字的方法,但它们要么不起作用,要么很多行,我不敢相信它来自javascript,我只需要parseFloat()。

这就是我现在正在尝试的事情:

String numString = "1".trim().replaceAll(",","");
float num = (Float.valueOf(numString)).floatValue(); // First try
Double num2 = Double.parseDouble(numString); // Second try
System.out.println(num + " - " + num2); // returns 1.0 - 1.0

如何在需要时才能拥有浮点?

3 个答案:

答案 0 :(得分:3)

要根据需要格式化浮点数,请使用DecimalFormat

DecimalFormat df = new DecimalFormat("#.###");
System.out.println(df.format(1.0f)); // prints 1
System.out.println(df.format(1.5f)); // prints 1.5

在您的情况下,您可以使用

System.out.println(df.format(num) + " - " + df.format(num2));

答案 1 :(得分:1)

我认为您正在寻找的是DecimalFormat

DecimalFormat format = new DecimalFormat("#.##");
double doubleFromTextField = Double.parseDouble(myField.getText());
System.out.println(format.format(doubleFromTextField));

答案 2 :(得分:0)

问题在于您的问题确实是一种类型安全的语言,我认为您正在混合转换和字符串表示。在Java或C#或C ++中,您可以转换为某种可预测/期望的类型,看起来您期望" Variant"您在JavaScript中习惯的行为。

你可以用类型安全的语言做什么:

public static Object convert(String val)
{
  // try to convert to int and if u could then return Integer
  ELSE
  //try to convert to float and if you could then return it
  ELSE
  //try to convert to double
  etc...
}

当然,就像JavaScript与C ++或Java相比,这是非常低效的。变体/多态(使用Object)需要付出代价

然后你可以使用toString()来获取整数格式为整数,浮点数为float,double为double多态。但是你的问题充其量是模棱两可的,这使我相信存在概念问题。