无法从浮点数转换为双精度数?

时间:2021-04-16 04:55:37

标签: java floating-point

<块引用>

计算圆周面积的公式定义为 x = π 。 R2。考虑到这个问题 π = 3.14159:

使用问题描述中给出的公式计算面积。

Input 输入包含一个浮点值(双精度), 这就是变量 R。

对于 2 的输入,我应该得到 x=12.5664 四舍五入一个数字。

我尝试使用这个简单的代码,但我不记得如何处理“无法从双精度转换为浮点数”错误。编码已经半年了。

package TEST;
import java.util.Scanner;
public class TEST {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    // let A be radius
    float A = scanner.nextFloat();
    float A_2 = A * A;
    // let B be Pi
    double B = 3.14159;
    
    // let x be circumference
    float x = A_2 * B;
    
    System.out.printf("x= %.4f" + x);

    
    }}

2 个答案:

答案 0 :(得分:3)

编译错误的原因是以下赋值:

float x = A_2 * B;

其中 Bdouble 类型,因此产品的结果将是 double 类型,它不能容纳到 float 类型的变量中.请记住:double 需要 8 个字节的空间,而 float 变量只能容纳 4 个字节。

更正此编译错误后,您将遇到运行时错误,因为您在 { 中使用了加号 (+) 而不是逗号 (,) {1}} 语句。

除此之外,

  1. 始终遵循 Java 命名约定,例如printf 应为 Aa 应为 A_2,遵循约定。
  2. 您可以使用 a2 而不是使用您自己的 Math.PI 值。

以下代码包含这些更改:

PI

示例运行:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // let a be radius
        float a = scanner.nextFloat();
        float a2 = a * a;
        // let b be PI
        double b = Math.PI;

        // let x be circumference
        double x = a2 * b;

        System.out.printf("x= %.4f", x);
    }
}

答案 1 :(得分:0)

你可以试试:

double A_2Converted = (double) A_2;

并使用它。

来源:Convert float to double without losing precision