我想在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
如何在需要时才能拥有浮点?
答案 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多态。但是你的问题充其量是模棱两可的,这使我相信存在概念问题。