圆的半径计算器 - 使用直径、周长或面积计算

使用直径、周长或面积计算圆的半径。适合几何计算和理解圆的属性。

圆的半径计算器

📚

文档

圆的半径计算器

介绍

半径是圆的最基本属性之一。它是从圆心到圆周上任意一点的距离。此计算器允许您根据个不同的输入参数来确定圆的半径:

  1. 直径
  2. 周长
  3. 面积

通过提供这些值中的任何一个,您可以使用圆几何中的数学关系计算半径。

公式

可以通过以下公式从直径、周长或面积计算半径:

  1. 从直径 (dd)

    r=d2r = \frac{d}{2}
  2. 从周长 (CC)

    r=C2πr = \frac{C}{2\pi}
  3. 从面积 (AA)

    r=Aπr = \sqrt{\frac{A}{\pi}}

这些公式源于圆的基本属性:

  • 直径:直径是半径的两倍 (d=2rd = 2r)。
  • 周长:周长是圆周的长度 (C=2πrC = 2\pi r)。
  • 面积:圆所包围的面积 (A=πr2A = \pi r^2)。

计算

从直径计算半径

给定直径,半径就是它的一半:

r=d2r = \frac{d}{2}

示例

如果直径为10单位:

r=102=5 单位r = \frac{10}{2} = 5 \text{ 单位}

从周长计算半径

从周长公式开始:

C=2πrC = 2\pi r

解出 rr

r=C2πr = \frac{C}{2\pi}

示例

如果周长为 31.415931.4159 单位:

r=31.41592π31.41596.28325 单位r = \frac{31.4159}{2\pi} \approx \frac{31.4159}{6.2832} \approx 5 \text{ 单位}

从面积计算半径

从面积公式开始:

A=πr2A = \pi r^2

解出 rr

r=Aπr = \sqrt{\frac{A}{\pi}}

示例

如果面积为 78.539878.5398 平方单位:

r=78.5398π=78.53983.141625=5 单位r = \sqrt{\frac{78.5398}{\pi}} = \sqrt{\frac{78.5398}{3.1416}} \approx \sqrt{25} = 5 \text{ 单位}

边缘情况和输入验证

  • 零或负输入:圆的直径、周长或面积不能为负或零。如果这些值中的任何一个为零或负数,则半径是未定义的。在这种情况下,计算器将显示错误信息。

  • 非数字输入:计算器需要数字输入。非数字值(例如字母或符号)是无效的。

精度和四舍五入

此计算器使用双精度浮点数算术进行计算。结果通常显示为四舍五入到位小数,以提高准确性。在使用数学常数如 π\pi 时,计算器利用编程语言或环境中可用的全部精度。请注意,浮点算术在某些情况下可能会引入小的舍入误差。

用例

计算圆的半径在各个领域都是必不可少的:

工程和建筑

  • 设计圆形组件:工程师在设计轮子、齿轮、管道或穹顶时经常需要确定半径。

  • 建筑:建筑师使用半径设计拱门、穹顶和圆形建筑。

天文学

  • 行星轨道:天文学家根据观测数据计算行星轨道的半径。

  • 天体:确定行星、恒星和其他天体的大小。

日常问题解决

  • 艺术和设计:艺术家和设计师计算半径以创建圆形图案和设计。

  • DIY项目:计算圆形桌子、花园或喷泉所需的材料。

数学和教育

  • 学习几何:理解圆的属性是几何教育的基础。

  • 问题解决:半径计算在数学问题和竞赛中很常见。

替代方案

虽然半径是一个主要属性,但有时其他圆的属性更方便直接测量:

  • 测量弦长:在您有固定点在圆上并需要计算半径的情况下非常有用。

  • 使用扇形面积或弧长:在涉及圆的部分区域的情况下。

历史

对圆的研究可以追溯到古代文明:

  • 古代几何:自古埃及人和巴比伦人以来,圆就被研究。

  • 欧几里得的《几何原本》:公元前300年左右,欧几里得在他的开创性著作《几何原本》中定义了圆及其属性。

  • 阿基米德:提供了近似 π\pi 的方法,并计算与圆和球体相关的面积和体积。

  • π\pi 的发展:几个世纪以来,数学家如刘徽、祖冲之、阿耶波多、最终约翰·沃利斯和艾萨克·牛顿完善了 π\pi 的值和理解。

半径仍然是几何学中一个基本概念,同时在物理学、工程学和各种应用科学中也占有重要地位。

示例

以下是多种编程语言中计算从直径、周长和面积计算半径的代码示例。

从直径

Python
1## 从直径计算半径
2def radius_from_diameter(diameter):
3    if diameter <= 0:
4        raise ValueError("直径必须大于零。")
5    return diameter / 2
6
7## 示例用法
8d = 10
9r = radius_from_diameter(d)
10print(f"半径是 {r} 单位。")
11
JavaScript
1// 从直径计算半径
2function radiusFromDiameter(diameter) {
3    if (diameter <= 0) {
4        throw new Error("直径必须大于零。");
5    }
6    return diameter / 2;
7}
8
9// 示例用法
10let d = 10;
11let r = radiusFromDiameter(d);
12console.log(`半径是 ${r} 单位。`);
13
Java
1public class CircleRadiusCalculator {
2    public static double radiusFromDiameter(double diameter) {
3        if (diameter <= 0) {
4            throw new IllegalArgumentException("直径必须大于零。");
5        }
6        return diameter / 2;
7    }
8
9    public static void main(String[] args) {
10        double d = 10;
11        double r = radiusFromDiameter(d);
12        System.out.printf("半径是 %.2f 单位。%n", r);
13    }
14}
15
C++
1// 从直径计算半径
2#include <iostream>
3#include <stdexcept>
4
5double radiusFromDiameter(double diameter) {
6    if (diameter <= 0) {
7        throw std::invalid_argument("直径必须大于零。");
8    }
9    return diameter / 2.0;
10}
11
12int main() {
13    double d = 10.0;
14    try {
15        double r = radiusFromDiameter(d);
16        std::cout << "半径是 " << r << " 单位。" << std::endl;
17    } catch (const std::exception& e) {
18        std::cerr << e.what() << std::endl;
19    }
20    return 0;
21}
22
R
1## 从直径计算半径
2radius_from_diameter <- function(diameter) {
3  if (diameter <= 0) {
4    stop("直径必须大于零。")
5  }
6  return(diameter / 2)
7}
8
9## 示例用法
10d <- 10
11r <- radius_from_diameter(d)
12cat(sprintf("半径是 %.2f 单位。\n", r))
13
Ruby
1## 从直径计算半径
2def radius_from_diameter(diameter)
3  raise ArgumentError, "直径必须大于零。" if diameter <= 0
4  diameter / 2.0
5end
6
7## 示例用法
8d = 10
9r = radius_from_diameter(d)
10puts "半径是 #{r} 单位。"
11
PHP
1<?php
2// 从直径计算半径
3function radiusFromDiameter($diameter) {
4    if ($diameter <= 0) {
5        throw new Exception('直径必须大于零。');
6    }
7    return $diameter / 2;
8}
9
10// 示例用法
11$d = 10;
12$r = radiusFromDiameter($d);
13echo "半径是 {$r} 单位。";
14?>
15
Rust
1// 从直径计算半径
2fn radius_from_diameter(diameter: f64) -> Result<f64, &'static str> {
3    if diameter <= 0.0 {
4        return Err("直径必须大于零。");
5    }
6    Ok(diameter / 2.0)
7}
8
9fn main() {
10    let d = 10.0;
11    match radius_from_diameter(d) {
12        Ok(r) => println!("半径是 {:.2} 单位。", r),
13        Err(e) => println!("{}", e),
14    }
15}
16
Swift
1import Foundation
2
3// 从直径计算半径
4func radiusFromDiameter(_ diameter: Double) throws -> Double {
5    if diameter <= 0 {
6        throw NSError(domain: "InvalidInput", code: 0, userInfo: [NSLocalizedDescriptionKey: "直径必须大于零。"])
7    }
8    return diameter / 2.0
9}
10
11// 示例用法
12do {
13    let d = 10.0
14    let r = try radiusFromDiameter(d)
15    print("半径是 \(r) 单位。")
16} catch {
17    print(error.localizedDescription)
18}
19

从周长

Python
1import math
2
3## 从周长计算半径
4def radius_from_circumference(circumference):
5    if circumference <= 0:
6        raise ValueError("周长必须大于零。")
7    return circumference / (2 * math.pi)
8
9## 示例用法
10C = 31.4159
11r = radius_from_circumference(C)
12print(f"半径是 {r:.2f} 单位。")
13
JavaScript
1// 从周长计算半径
2function radiusFromCircumference(circumference) {
3    if (circumference <= 0) {
4        throw new Error("周长必须大于零。");
5    }
6    return circumference / (2 * Math.PI);
7}
8
9// 示例用法
10let C = 31.4159;
11let r = radiusFromCircumference(C);
12console.log(`半径是 ${r.toFixed(2)} 单位。`);
13
Java
1public class CircleRadiusCalculator {
2    public static double radiusFromCircumference(double circumference) {
3        if (circumference <= 0) {
4            throw new IllegalArgumentException("周长必须大于零。");
5        }
6        return circumference / (2 * Math.PI);
7    }
8
9    public static void main(String[] args) {
10        double C = 31.4159;
11        double r = radiusFromCircumference(C);
12        System.out.printf("半径是 %.2f 单位。%n", r);
13    }
14}
15
C++
1// 从周长计算半径
2#include <iostream>
3#include <cmath>
4#include <stdexcept>
5
6double radiusFromCircumference(double circumference) {
7    if (circumference <= 0) {
8        throw std::invalid_argument("周长必须大于零。");
9    }
10    return circumference / (2.0 * M_PI);
11}
12
13int main() {
14    double C = 31.4159;
15    try {
16        double r = radiusFromCircumference(C);
17        std::cout << "半径是 " << r << " 单位。" << std::endl;
18    } catch (const std::exception& e) {
19        std::cerr << e.what() << std::endl;
20    }
21    return 0;
22}
23
R
1## 从周长计算半径
2radius_from_circumference <- function(circumference) {
3  if (circumference <= 0) {
4    stop("周长必须大于零。")
5  }
6  return(circumference / (2 * pi))
7}
8
9## 示例用法
10C <- 31.4159
11r <- radius_from_circumference(C)
12cat(sprintf("半径是 %.2f 单位。\n", r))
13
Ruby
1## 从周长计算半径
2def radius_from_circumference(circumference)
3  raise ArgumentError, "周长必须大于零。" if circumference <= 0
4  circumference / (2 * Math::PI)
5end
6
7## 示例用法
8C = 31.4159
9r = radius_from_circumference(C)
10puts "半径是 #{format('%.2f', r)} 单位。"
11
PHP
1<?php
2// 从周长计算半径
3function radiusFromCircumference($circumference) {
4    if ($circumference <= 0) {
5        throw new Exception('周长必须大于零。');
6    }
7    return $circumference / (2 * M_PI);
8}
9
10// 示例用法
11$C = 31.4159;
12$r = radiusFromCircumference($C);
13echo "半径是 " . round($r, 2) . " 单位。";
14?>
15
Rust
1use std::f64::consts::PI;
2
3// 从周长计算半径
4fn radius_from_circumference(circumference: f64) -> Result<f64, &'static str> {
5    if circumference <= 0.0 {
6        return Err("周长必须大于零。");
7    }
8    Ok(circumference / (2.0 * PI))
9}
10
11fn main() {
12    let C = 31.4159;
13    match radius_from_circumference(C) {
14        Ok(r) => println!("半径是 {:.2} 单位。", r),
15        Err(e) => println!("{}", e),
16    }
17}
18
Swift
1import Foundation
2
3// 从周长计算半径
4func radiusFromCircumference(_ circumference: Double) throws -> Double {
5    if circumference <= 0 {
6        throw NSError(domain: "InvalidInput", code: 0, userInfo: [NSLocalizedDescriptionKey: "周长必须大于零。"])
7    }
8    return circumference / (2 * Double.pi)
9}
10
11// 示例用法
12do {
13    let C = 31.4159
14    let r = try radiusFromCircumference(C)
15    print(String(format: "半径是 %.2f 单位。", r))
16} catch {
17    print(error.localizedDescription)
18}
19

从面积

Python
1import math
2
3## 从面积计算半径
4def radius_from_area(area):
5    if area <= 0:
6        raise ValueError("面积必须大于零。")
7    return math.sqrt(area / math.pi)
8
9## 示例用法
10A = 78.5398
11r = radius_from_area(A)
12print(f"半径是 {r:.2f} 单位。")
13
JavaScript
1// 从面积计算半径
2function radiusFromArea(area) {
3    if (area <= 0) {
4        throw new Error("面积必须大于零。");
5    }
6    return Math.sqrt(area / Math.PI);
7}
8
9// 示例用法
10let A = 78.5398;
11let r = radiusFromArea(A);
12console.log(`半径是 ${r.toFixed(2)} 单位。`);
13
Java
1public class CircleRadiusCalculator {
2    public static double radiusFromArea(double area) {
3        if (area <= 0) {
4            throw new IllegalArgumentException("面积必须大于零。");
5        }
6        return Math.sqrt(area / Math.PI);
7    }
8
9    public static void main(String[] args) {
10        double A = 78.5398;
11        double r = radiusFromArea(A);
12        System.out.printf("半径是 %.2f 单位。%n", r);
13    }
14}
15
C++
1// 从面积计算半径
2#include <iostream>
3#include <cmath>
4#include <stdexcept>
5
6double radiusFromArea(double area) {
7    if (area <= 0) {
8        throw std::invalid_argument("面积必须大于零。");
9    }
10    return std::sqrt(area / M_PI);
11}
12
13int main() {
14    double A = 78.5398;
15    try {
16        double r = radiusFromArea(A);
17        std::cout << "半径是 " << r << " 单位。" << std::endl;
18    } catch (const std::exception& e) {
19        std::cerr << e.what() << std::endl;
20    }
21    return 0;
22}
23
R
1## 从面积计算半径
2radius_from_area <- function(area) {
3  if (area <= 0) {
4    stop("面积必须大于零。")
5  }
6  return(sqrt(area / pi))
7}
8
9## 示例用法
10A <- 78.5398
11r <- radius_from_area(A)
12cat(sprintf("半径是 %.2f 单位。\n", r))
13
MATLAB
1% 从面积计算半径
2function r = radius_from_area(area)
3    if area <= 0
4        error('面积必须大于零。');
5    end
6    r = sqrt(area / pi);
7end
8
9% 示例用法
10A = 78.5398;
11r = radius_from_area(A);
12fprintf('半径是 %.2f 单位。\n', r);
13
C#
1using System;
2
3class CircleRadiusCalculator
4{
5    public static double RadiusFromArea(double area)
6    {
7        if (area <= 0)
8            throw new ArgumentException("面积必须大于零。");
9        return Math.Sqrt(area / Math.PI);
10    }
11
12    static void Main()
13    {
14        double A = 78.5398;
15        double r = RadiusFromArea(A);
16        Console.WriteLine("半径是 {0:F2} 单位。", r);
17    }
18}
19
Go
1package main
2
3import (
4	"fmt"
5	"math"
6)
7
8func radiusFromArea(area float64) (float64, error) {
9	if area <= 0 {
10		return 0, fmt.Errorf("面积必须大于零。")
11	}
12	return math.Sqrt(area / math.Pi), nil
13}
14
15func main() {
16	A := 78.5398
17	r, err := radiusFromArea(A)
18	if err != nil {
19		fmt.Println(err)
20		return
21	}
22	fmt.Printf("半径是 %.2f 单位。\n", r)
23}
24
Ruby
1## 从面积计算半径
2def radius_from_area(area)
3  raise ArgumentError, "面积必须大于零。" if area <= 0
4  Math.sqrt(area / Math::PI)
5end
6
7## 示例用法
8A = 78.5398
9r = radius_from_area(A)
10puts "半径是 #{format('%.2f', r)} 单位。"
11
PHP
1<?php
2// 从面积计算半径
3function radiusFromArea($area) {
4    if ($area <= 0) {
5        throw new Exception('面积必须大于零。');
6    }
7    return sqrt($area / M_PI);
8}
9
10// 示例用法
11$A = 78.5398;
12$r = radiusFromArea($A);
13echo "半径是 " . round($r, 2) . " 单位。";
14?>
15
Rust
1use std::f64::consts::PI;
2
3// 从面积计算半径
4fn radius_from_area(area: f64) -> Result<f64, &'static str> {
5    if area <= 0.0 {
6        return Err("面积必须大于零。");
7    }
8    Ok((area / PI).sqrt())
9}
10
11fn main() {
12    let A = 78.5398;
13    match radius_from_area(A) {
14        Ok(r) => println!("半径是 {:.2} 单位。", r),
15        Err(e) => println!("{}", e),
16    }
17}
18
Swift
1import Foundation
2
3// 从面积计算半径
4func radiusFromArea(_ area: Double) throws -> Double {
5    if area <= 0 {
6        throw NSError(domain: "InvalidInput", code: 0, userInfo: [NSLocalizedDescriptionKey: "面积必须大于零。"])
7    }
8    return sqrt(area / Double.pi)
9}
10
11// 示例用法
12do {
13    let A = 78.5398
14    let r = try radiusFromArea(A)
15    print(String(format: "半径是 %.2f 单位。", r))
16} catch {
17    print(error.localizedDescription)
18}
19

Excel

1## 在单元格 B1 中从直径计算半径
2=IF(B1>0, B1/2, "无效输入")
3
4## 在单元格 B2 中从周长计算半径
5=IF(B2>0, B2/(2*PI()), "无效输入")
6
7## 在单元格 B3 中从面积计算半径
8=IF(B3>0, SQRT(B3/PI()), "无效输入")
9

可视化

一个 SVG 图示,说明半径、直径和周长之间的关系:

半径 (r) 直径 (d) 周长 (C)

参考文献

  1. - 维基百科
  2. 周长 - 数学乐趣
  3. 圆的面积 - 可汗学院
  4. π\pi 的历史 - 维基百科