【问题标题】:How to get a float from a character如何从角色中获取浮点数
【发布时间】:2019-02-27 10:03:27
【问题描述】:

我有一个类似的字符

'0'

我需要从中获取float

0.0

但是,当我尝试使用(float)'0'char 转换为float 时,我得到的是48.0 而不是0.0。当我尝试使用 float.valueOf('0') 方法时,也会发生同样的事情。

任何帮助将不胜感激。

【问题讨论】:

  • Conversion Char to double的可能重复
  • 尝试将 '0' 转换为 int 然后将其转换为 float
  • 另一个问题是关于双精度的,但对于浮点数也是如此。
  • 其实每个装箱类型都有一个valueOf(String)方法。

标签: java


【解决方案1】:

通过将 char 转换为 float,您将获得 char ascii 值。 Float parseFloat 和 valueOf 方法可用于值转换。您可以从此处阅读此页面以获取详细信息:https://way2java.com/casting-operations/java-char-to-float 如果您将 char 转换为字符串并在下面尝试,您可以获得所需的结果:

String a = "0";
float f = Float.valueOf(a);
System.out.println(f);

【讨论】:

  • 这会产生与我的问题中提到的相同的结果
  • 在您的示例中,您的 0 是“字符串”而不是“字符”。
  • valueOf 方法需要字符串或浮点数。你为什么要把 char 作为这个方法的参数?
  • 问题很明显,您正在尝试将 char 转换为浮动,我在回答中解释了为什么您不能以自己的方式这样做。
  • 我知道我不能按照自己的方式去做,这就是为什么我要问如何去做,而不是为什么我的方式不正确。
【解决方案2】:

您需要减去 '0' 的 ASCII(unicode)值(这就是您得到 48.0 的原因)...

public class CTF {

    public static void main(String[] args) {
        char c = '0';
        float f = (float) (c - '0');
        System.out.println(f);
    }
}

这有点奇怪,因为如果你输入一个非数字,比如“G”,你会得到 23.0。 ' ' 产生 -16.0

【讨论】:

    【解决方案3】:

    Float.parseFloat(String.valueOf('0'));

    0.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 2012-10-29
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多