3

如何将 char 形式的数值转换为 double 值?

我已经尝试将 char 转换为双精度,但是......它不像我猜测的那样工作,因为 '4' 之类的 char 将在双精度中转换为 52.0。

那么有没有办法将值为 say char c = '4' 的 char 转换为 4.0 的双精度值,我实际上可以对该值执行数学计算?

这只是我创建的一个小程序,用于表明将数字字符直接转换为双精度不会按我预期的方式工作。

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
4

7 回答 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是字符串是无效的浮点数

于 2013-11-14T20:27:06.193 回答
2

您可以减去'0'然后转换为double

char c = '8';

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

System.out.println(d);
8.0

您可以c通过'0' <= c && c <= '9'.

于 2013-11-14T20:27:04.333 回答
1

您还可以使用:

double d2 = Double.valueOf(String.valueOf(eight));
double d1 = Double.valueOf(String.valueOf(four));
于 2013-11-14T20:27:52.720 回答
1

当您像这样进行转换时,它会返回 4 或 8 的 ASCII 代码。以下代码是您想要的:

char myc='4';
double myd= Double.parseDouble(Character.toString(myc));
于 2013-11-14T20:36:46.887 回答
0

该字符'0'不对应于整数0。它对应于字符的 ASCII 键码'0''0'幸运的是,字符的键码'9'是连续的,因此您可以简单地减去'0'将数字字符转换为它所代表的整数:

double d2 = (char)(eight - '0');
double d1 = (char)(four - '0');
于 2013-11-14T20:28:07.133 回答
0

这个怎么样?

char doubleChar = '8';
double doubleDouble = Double.parseDouble(Character.toString(doubleChar));
于 2013-11-14T20:33:35.500 回答
0

您需要将 char 转换为字符串,然后像这样加倍:

double d2 = Double.parseDouble(Character.toString(eight));
double d1 = Double.parseDouble(Character.toString(four));
于 2013-11-14T20:44:16.330 回答