You need to enable JavaScript to run this app. 在Delphi中如何正确提取输入数字的千位、百位、十位及个位数值
优惠活动
大模型
产品
解决方案
定价
更多

在Delphi中如何正确提取输入数字的千位、百位、十位及个位数值

Delphi 提取整数各数位的修正方案

原有代码的问题说明

  • 语法类错误:Delphi 中执行变量赋值必须使用 := 运算符,原代码里 iNumOnes = iNum DIV 1 误用了用于逻辑相等判断的 = 符号,会直接触发编译报错。
  • 逻辑类缺陷:仅靠整除运算无法拆分出单独的数位,运算结果会连带保留低位的数值:
    • 原代码中 iNumTens := iNum DIV 10 对155运算的结果是15,并非期望的十位数值5
    • 原代码中个位提取用 DIV 1 等于直接返回整个原数,完全没有剥离高位数值的效果
    • 原代码未定义、未实现千位的提取逻辑,和需求不匹配

正确的数位提取逻辑

提取固定位置数位的通用规则是:先将原数整除到目标数位对应的量级,再与10做取模运算剥离所有高位数值:

  • 千位:将原数整除1000后,对10取余
  • 百位:将原数整除100后,对10取余
  • 十位:将原数整除10后,对10取余
  • 个位:直接将原数对10取余

注意:如果输入内容可能为负整数,需要先对原数取绝对值再做数位计算,否则取模返回的结果会携带负号,和实际数位值不符。

修正后的可运行代码

var
  iNum, iNumThou, iNumHun, iNumTens, iNumOnes: Integer;
begin
  // 先取输入数值的绝对值,规避负数取模的符号问题
  iNum := Abs(StrToInt(edtInput.Text));
  // 千位:先整除1000,再取模剥离更高位
  iNumThou := (iNum div 1000) mod 10;
  // 百位:先整除100,再取模剥离更高位
  iNumHun := (iNum div 100) mod 10;
  // 十位:先整除10,再取模剥离更高位
  iNumTens := (iNum div 10) mod 10;
  // 个位:直接取模10
  iNumOnes := iNum mod 10;
end;

内容的提问来源于stack exchange,提问作者Renier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 07:24:05