将字符转换为双精度浮点数

3

如何将字符形式的数字转换为双精度浮点数?

我尝试将字符直接强制转换为double,但是...这样做不起作用,因为字符(例如'4')会在双精度浮点数中转换为52.0。

那么,有没有办法将值为'4'的char转换为值为4.0的double,以便我可以对该值进行数学计算?

这只是我创建的一个小程序,用来展示将数值字符直接强制转换为double并不像我期望的那样有效。

public class conversion
{
public static void main(String args[])
{
    char eight = '8';
    char four = '4';

    double d2 = (char)eight;
    double d1 = (char)four;

    System.out.println(d2);
    System.out.println(d1);

    double result = (d2 / d1);

    System.out.println(result);
}
}

输出:

56.0
52.0
1.0769230769230769

先尝试将其转换为 int,然后再转换为 double - David says Reinstate Monica
一个 char 只是一个具有符号表示的整数。 - Sotirios Delimanolis
7个回答

3
您可以做到以下几点:
double d2 = (double) Character.digit(eight, 10);
double d1 = (double) Character.digit(four, 10);

或者:

double d2 = (double) (eight - '0');
double d1 = (double) (four - '0');

如果你想把整个字符串转换成数字,请使用 Double.parseDouble

double d2 = Double.parseDouble("15.5");

如果字符串无效浮点数,则需注意可能会出现 NumberFormatException


2
你可以先减去'0',然后将其转换为double类型:
char c = '8';

double d = (double) (c - '0');  // <--

System.out.println(d);
8.0

您可以通过 '0' <= c && c <= '9' 来验证c是否有效。


1
您可以使用:

double d2 = Double.valueOf(String.valueOf(eight));
double d1 = Double.valueOf(String.valueOf(four));

这对于如此简单的事情来说确实有点过度。 - arshajii
@arshajii 要考虑到它会在无效输入时抛出异常,这可能是 OP 想要的。 - Sotirios Delimanolis
@SotiriosDelimanolis 在输入之前检查无效输入是微不足道的(请参见我的答案)。 - arshajii
@arshajii 至少如果 OP 有一天 String numb = "12.5";,那可能会有所帮助。 - Alexis C.

1
当您这样投掷时,它返回4或8的ASCII代码。以下代码是您想要的:
char myc='4';
double myd= Double.parseDouble(Character.toString(myc));

0
字符'0'并不对应整数0,而是对应ASCII码中'0'字符的键值。幸运的是,字符'0''9'的键值是连续的,因此您可以通过减去'0'来将数字字符转换为它所代表的整数。
double d2 = (char)(eight - '0');
double d1 = (char)(four - '0');

这个只适用于字符'0'到'9'吗?有没有一种简单的方法可以转换更高的数字值?*编辑忘记我问那个不合逻辑的问题,完全忘记了字符只能是单个数字。 - JFC
较高的十进制数值无法由单个字符表示。例如,没有字符“'15'”。如果您想要转换一串数字,可以使用内置函数如Integer.parseInt()或逐个字符进行转换,每增加一个数字就将中间结果乘以10 - Mike Strobel

0

这个怎么样?

char doubleChar = '8';
double doubleDouble = Double.parseDouble(Character.toString(doubleChar));

0
你需要将字符转换为字符串,然后再转换为双精度浮点数,像这样:
double d2 = Double.parseDouble(Character.toString(eight));
double d1 = Double.parseDouble(Character.toString(four));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接