0Pricing
C# Academy · 课时

数值类型之间的转换

类型转换和 Convert 方法。

数值类型之间的转换 是 CoddyKit 上的免费 C# Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。

为什么要转换

不同的数值类型不一定能自由混合使用。有时,您必须将一个类型的值转换为另一种类型。

C# 提供隐式转换、显式强制转换、Convert 类以及从文本进行解析。本课将逐一介绍这些方式。

隐式转换

当目标类型能够容纳源类型的所有可能值时,C# 会在无需额外语法的情况下进行隐式转换。

int 可以容纳在 double 中,因此这种赋值会自动且安全地完成。

int whole = 7;
double real = whole;
Console.WriteLine(real);

显式强制转换

反向转换可能会丢失数据,因此 C# 要求使用带有目标类型括号的显式强制转换。

将 double 强制转换为 int 时,小数部分会朝零方向截断。

double price = 9.99;
int dollars = (int)price;
Console.WriteLine(dollars);

强制转换可能溢出

将不适合目标类型的值进行强制转换,可能因溢出而产生错误结果。

将较大的 long 强制转换为 int 时会发生回绕,因此请始终确认数值能够 fit 在目标类型中。

long big = 3000000000;
int small = (int)big;
Console.WriteLine(small);

Convert 类

System.Convert 类通过 Convert.ToInt32 和 Convert.ToDouble 等方法在不同类型之间进行转换。

与强制转换不同,Convert.ToInt32 会将 double 舍入到最近的整数,而不是进行截断。

double value = 9.99;
int rounded = Convert.ToInt32(value);
Console.WriteLine(rounded);

从文本解析数字

用户输入和文件会以 string 的形式传入。使用 int.Parse 或 double.Parse 可以将文本转换为数字。

文本必须是有效数字,否则解析会引发异常。

string text = "42";
int number = int.Parse(text);
Console.WriteLine(number + 8);

使用 TryParse 安全解析

int.TryParse 会尝试进行转换,并返回 true 或 false,而不是引发异常。解析出的值会通过 out 参数返回。

这是处理不受信任输入的安全方式。

bool ok = int.TryParse("abc", out int result);
Console.WriteLine(ok);
Console.WriteLine(result);

数字转字符串

每种数值类型都有一个 ToString 方法,用于生成文本。您可以传入格式字符串来控制显示样式。

  • "C" 货币
  • "F2" 固定两位小数
  • "N0" 千位分组
double amount = 1234.5;
Console.WriteLine(amount.ToString("F2"));
Console.WriteLine(amount.ToString("N0"));

整数类型转双精度类型进行除法

需要进行转换的常见原因是避免整数除法。在相除之前,将一个操作数强制转换为 double,以保留小数。

如果不进行强制转换,您将得到截断后的整数结果。

int scored = 7, total = 10;
double percent = (double)scored / total * 100;
Console.WriteLine(percent);

强制转换、Convert 与 Parse 的区别

请选择合适的工具:

  • 在数值类型之间进行强制转换(会截断)
  • 在多种类型之间使用 Convert 进行转换(会舍入并处理 null)
  • Parse / TryParse 将文本转换为数字

对于任何不受您控制的输入,请优先使用 TryParse。

转换示例

这个完整程序从文本中读取一个数字,将其转换并进行计算,然后将输出格式化为货币。

string input = "19.95";
if (decimal.TryParse(input, out decimal price))
{
    decimal withTax = price * 1.20m;
    Console.WriteLine(withTax.ToString("F2"));
}

快速检查

选择将用户输入的文本转换为数字的最安全方式。

总结

您学会了转换数字:在安全时使用隐式转换,使用显式强制转换(会截断并可能溢出),使用 Convert 类(会舍入),以及使用 Parse 和更安全的 TryParse 解析文本。

您还使用 ToString 格式代码将数字重新格式化为字符串。将一个操作数强制转换为 double 可以避免整数除法。

常见问题解答

「数值类型之间的转换」课时是免费的吗?

是的 — 「数值类型之间的转换」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。

「数值类型之间的转换」这节课中我会学到什么?

类型转换和 Convert 方法。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「数值类型之间的转换」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 数值类型
  2. 算术与优先级
  3. Math 类
  4. 数值类型之间的转换
← 返回 C# Academy