VB Visual Basic 2026 中文教程
第 10 课 · 方法与数学运算

常用方法与 Math 类

前几课已经多次看到 Clear()Trim()ToString() 等写法。这些都是“方法”。本课先建立方法调用的概念,再学习 .NET 提供的 Math 类,让程序快速完成绝对值、四舍五入、平方根、乘方、最大值、最小值等常见数学运算。

适合:完成第 9 课的初学者建议时间:45–60 分钟实作:MathToolbox2026

本课学习目标

  • 理解什么是方法(Method),以及方法调用的基本结构。
  • 区分对象方法与 Math 类的共享方法。
  • 使用 Math.Abs 取得绝对值。
  • 使用 Math.Round 进行四舍五入。
  • 使用 Math.MaxMath.Min 比较数值。
  • 使用 Math.SqrtMath.Pow
  • 理解 Math.FloorMath.CeilingMath.Truncate 的差别。
  • 完成一个整合多种 Math 方法的数学工具箱。

10.1 什么是方法?

方法(Method)可以理解为“某个对象或类型能够执行的操作”。程序调用方法时,就是要求它完成一项工作。

你其实已经使用过很多方法:

txtName.Clear()
txtName.Focus()
txtName.Text.Trim()
number.ToString()
Clear()

清除内容

TextBox 的方法,用来清除当前文字。

Focus()

取得输入焦点

让指定控件成为当前键盘输入目标。

Trim()

移除前后空格

String 的方法,会返回去掉前后空格的新字符串。

ToString()

转换成字符串

很多 .NET 类型都提供这个方法。

10.2 看懂方法调用

对象或类型.方法名称(参数)

例如:

txtName.Clear()

可以读成:“请 txtName 执行 Clear 方法。”

再看:

Math.Round(12.3456, 2)

这里:

Math
Round方法名称
12.3456, 2参数
12.35返回结果
括号里的资料叫参数 有些方法不需要参数,例如 Clear();有些方法需要一个或多个参数,例如 Math.Round(value, digits)

10.3 什么是 Math 类?

Math 是 .NET 提供的数学类,里面包含许多常用数学方法和常量。使用它时通常不需要先建立 Math 对象,可以直接调用:

Dim result As Double = Math.Sqrt(81)

这里直接用:

Math.Sqrt(...)

而不是先写:

Dim myMath As New Math()

因为 Math 的这些常用成员属于共享(Shared)成员。

对象方法

txtName.Clear() 作用在某个具体 TextBox 对象上。

共享方法

Math.Sqrt(81) 直接通过 Math 类调用,不需要建立 Math 实例。

10.4 Math.Abs:绝对值

绝对值表示一个数与 0 的距离,不考虑正负号:

Dim result1 As Integer = Math.Abs(-25)
Dim result2 As Double = Math.Abs(-3.75)

结果:

  • result1 = 25
  • result2 = 3.75

例如计算两个温度之间的差:

Dim temperature1 As Double = 30.5
Dim temperature2 As Double = 24.2

Dim difference As Double = Math.Abs(temperature1 - temperature2)

10.5 Math.Round:四舍五入

使用 Math.Round 可以把数值舍入到指定小数位数:

Dim value As Double = 12.3456

Dim result1 As Double = Math.Round(value, 2)
Dim result2 As Double = Math.Round(value, 1)

常见结果:

  • 保留两位小数 → 12.35
  • 保留一位小数 → 12.3
显示格式与真正改变数值不是同一件事 ToString("N2") 主要控制显示;Math.Round(value, 2) 会返回经过舍入的数值。两者用途不同。

10.6 Math.Max 与 Math.Min

要比较两个值,可以使用:

Dim highest As Integer = Math.Max(85, 92)
Dim lowest As Integer = Math.Min(85, 92)

结果:

  • highest = 92
  • lowest = 85

例如比较两个商品价格:

Dim priceA As Decimal = 19.9D
Dim priceB As Decimal = 25.5D

Dim higherPrice As Decimal = Math.Max(priceA, priceB)

10.7 Math.Sqrt:平方根

Math.Sqrt 用来计算平方根:

Dim answer As Double = Math.Sqrt(81)

结果为 9,因为:

9 × 9 = 81

另一个例子:

Dim answer As Double = Math.Sqrt(2)
lblResult.Text = answer.ToString("N4")

可显示约:

1.4142
负数的平方根 在实数范围中,负数没有实数平方根。对负数使用 Math.Sqrt 会得到特殊的非数值结果,而不是一般实数。初学阶段应先检查输入是否大于或等于 0。

10.8 Math.Pow:乘方

Math.Pow(base, exponent) 用来计算乘方:

Dim result As Double = Math.Pow(2, 3)

表示:

2³ = 2 × 2 × 2 = 8

例如:

Dim square As Double = Math.Pow(5, 2)
Dim cube As Double = Math.Pow(5, 3)
Math.Pow 返回 Double 即使输入整数,结果类型通常也是 Double。如果需要其他类型,可以根据程序需要再转换。

10.9 Floor、Ceiling 与 Truncate

这三个方法都会处理小数,但行为不同:

方法12.8 的结果-12.8 的结果意义
Math.Floor12-13向负无穷方向取整
Math.Ceiling13-12向正无穷方向取整
Math.Truncate12-12直接去掉小数部分,向 0 靠近
Dim value As Double = 12.8

Dim floorValue As Double = Math.Floor(value)
Dim ceilingValue As Double = Math.Ceiling(value)
Dim truncatedValue As Double = Math.Truncate(value)

10.10 Math.PI 与 Math.E

Math 类也提供常用数学常量:

Dim piValue As Double = Math.PI
Dim eValue As Double = Math.E

例如计算圆面积:

Dim radius As Double = 5
Dim area As Double = Math.PI * Math.Pow(radius, 2)

圆面积公式:

面积 = π × 半径²

10.11 实作:数学工具箱

建立新的 Windows Forms 项目:

MathToolbox2026

这个程序让用户输入两个数值,然后选择不同数学运算。为了让界面简单,本课使用多个按钮。

Math Toolbox 2026
数值 A:
25.6
数值 B:
9
操作:
绝对值最大/最小平方根A 的 B 次方
A 的绝对值:25.60
较大值:25.60
较小值:9.00
A 的平方根:5.06

加入以下控件:

控件NameText / 用途
FormForm1Text = 数学工具箱
TextBoxtxtValueA输入数值 A
TextBoxtxtValueB输入数值 B
ButtonbtnAbsText = 绝对值
ButtonbtnMaxMinText = 最大/最小
ButtonbtnSqrtText = 平方根
ButtonbtnPowerText = A 的 B 次方
ButtonbtnRoundText = 舍入 A
ButtonbtnClearText = 清除
LabellblResult显示结果;建议 AutoSize = True

绝对值按钮

Private Sub btnAbs_Click(sender As Object, e As EventArgs) Handles btnAbs.Click

    Dim valueA As Double = CDbl(txtValueA.Text)
    Dim result As Double = Math.Abs(valueA)

    lblResult.Text = "A 的绝对值:" & result.ToString("N2")

End Sub

最大值与最小值按钮

Private Sub btnMaxMin_Click(sender As Object, e As EventArgs) _
    Handles btnMaxMin.Click

    Dim valueA As Double = CDbl(txtValueA.Text)
    Dim valueB As Double = CDbl(txtValueB.Text)

    Dim highest As Double = Math.Max(valueA, valueB)
    Dim lowest As Double = Math.Min(valueA, valueB)

    lblResult.Text =
        "较大值:" & highest.ToString("N2") & Environment.NewLine &
        "较小值:" & lowest.ToString("N2")

End Sub

平方根按钮

Private Sub btnSqrt_Click(sender As Object, e As EventArgs) Handles btnSqrt.Click

    Dim valueA As Double = CDbl(txtValueA.Text)

    If valueA < 0 Then
        lblResult.Text = "平方根输入必须大于或等于 0。"
        Exit Sub
    End If

    Dim result As Double = Math.Sqrt(valueA)

    lblResult.Text = "A 的平方根:" & result.ToString("N4")

End Sub

乘方按钮

Private Sub btnPower_Click(sender As Object, e As EventArgs) Handles btnPower.Click

    Dim valueA As Double = CDbl(txtValueA.Text)
    Dim valueB As Double = CDbl(txtValueB.Text)

    Dim result As Double = Math.Pow(valueA, valueB)

    lblResult.Text = "A 的 B 次方:" & result.ToString("N4")

End Sub

舍入按钮

Private Sub btnRound_Click(sender As Object, e As EventArgs) Handles btnRound.Click

    Dim valueA As Double = CDbl(txtValueA.Text)

    Dim roundedValue As Double = Math.Round(valueA, 2)

    lblResult.Text =
        "原数值:" & valueA.ToString("N4") & Environment.NewLine &
        "舍入到两位小数:" & roundedValue.ToString("N2") & Environment.NewLine &
        "Floor:" & Math.Floor(valueA).ToString() & Environment.NewLine &
        "Ceiling:" & Math.Ceiling(valueA).ToString() & Environment.NewLine &
        "Truncate:" & Math.Truncate(valueA).ToString()

End Sub

清除按钮

Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
    txtValueA.Clear()
    txtValueB.Clear()
    lblResult.Text = ""
    txtValueA.Focus()
End Sub

10.12 逐步理解 Math 方法调用

1
读取用户输入

TextBox.Text 是 String,所以使用 CDbl 转换成 Double。

2
选择 Math 方法

根据功能调用 Abs、Max、Min、Sqrt、Pow 或 Round。

3
传入参数

例如 Math.Pow(valueA, valueB) 需要底数和指数两个参数。

4
接收返回值

Math 方法通常返回结果,因此可以把结果存入变量。

5
格式化并显示

使用 ToString("N2") 或 ToString("N4") 控制显示的小数位数。

10.13 方法与属性有什么不同?

属性(Property)

描述对象的状态或资料,例如 txtName.TextbtnSave.Enabled

方法(Method)

表示对象或类型能够执行的动作,例如 txtName.Clear()Math.Sqrt(81)

一个简单记法:

属性 = 它是什么 / 它目前有什么值 方法 = 它能做什么

10.14 初学者常见错误

错误 1

忘记方法括号

方法调用通常带括号,例如 txtName.Clear(),不要把它误写成属性访问。

错误 2

Sqrt 输入负数

实数平方根示例应先检查输入是否 ≥ 0。

错误 3

把 Round 当显示格式

Math.Round 返回舍入后的数值;ToString("N2") 主要负责显示格式。

错误 4

Floor 与 Truncate 混淆

对负数时差别最明显:Floor(-12.8) 是 -13,而 Truncate(-12.8) 是 -12。

输入验证仍然是下一阶段的重要内容 本课为了聚焦 Math 方法,仍直接使用 CDbl。如果输入空白或非数字会转换失败。第 13 课会正式使用 TryParse 处理这些情况。

10.15 小练习

  1. 加入“圆面积”按钮:读取 A 作为半径,使用 Math.PI * Math.Pow(valueA, 2)
  2. 加入“圆周长”按钮:使用 2 * Math.PI * valueA
  3. 让程序显示 A 与 B 的差距:Math.Abs(valueA - valueB)
  4. 新增“向下 / 向上取整”按钮,并测试正数与负数。
  5. 输入 2 和 10,使用 Math.Pow 计算 2¹⁰。
  6. 输入 144,确认 Math.Sqrt 返回 12。

本课复习

  1. 什么是方法?它和属性有什么不同?
  2. Math.Abs(-25) 的结果是什么?
  3. Math.Round(value, 2) 中的 2 表示什么?
  4. Math.MaxMath.Min 分别做什么?
  5. Math.Sqrt(81) 的结果是什么?
  6. Math.Pow(2, 3) 的结果是什么?
  7. Floor、Ceiling 与 Truncate 对 -12.8 的结果为什么不同?
  8. Math.PI 可以用于哪一类计算?