Delphi 7带小数的两个数字之和

Delphi 7带小数的两个数字之和,delphi,delphi-7,Delphi,Delphi 7,这里的初学者:) 我正在尝试制作一个需要用户输入的Delphi应用程序,然后添加和减去这些变量 我成功地创建了应用程序,除以下情况外,一切正常: 找不到正确的方法来处理带小数的数字 例如: A、 B,C,D,E,F:字符串; A1、B1、C1、D1、E1、F1:整数: 我使用InputBox获取用户输入。 我将输入存储在字符串变量中。 我将字符串变量转换为A1:=stroint(A)的整数; 最后,我想:A1+B1-C1-D1-E1-F1 如果输入为整数,则结束所有操作。 如果用户输入带小数的数

这里的初学者:)

我正在尝试制作一个需要用户输入的Delphi应用程序,然后添加和减去这些变量

我成功地创建了应用程序,除以下情况外,一切正常:

找不到正确的方法来处理带小数的数字

例如:

A、 B,C,D,E,F:字符串; A1、B1、C1、D1、E1、F1:整数:

我使用InputBox获取用户输入。 我将输入存储在字符串变量中。 我将字符串变量转换为A1:=stroint(A)的整数; 最后,我想:A1+B1-C1-D1-E1-F1 如果输入为整数,则结束所有操作。 如果用户输入带小数的数字,则会出现问题

我找遍了所有的地方,但找不到我问题的答案。(或者我不明白)

谁能给我指一下正确的方向


谢谢。

顾名思义,
stroint
将数字字符串转换为等效的整数。还有一个用于处理浮点数的解析函数
StrToFloat

您的变量当前定义为整数。如果要使用实数/十进制数,则需要使用
Double
类型


我建议您参考Delphi文档了解更多信息。

您正在尝试将字符串转换为浮点值

首先,您需要将
整数
变量更改为
Double
类型。这将允许您存储非整数的值

其次,您需要一个不同的函数来执行转换。您应该使用
TryStrToFloat
。这将尝试从字符串转换为浮点。如果转换成功,函数返回
True
,否则返回
False
。例如:

var
  str: string;
  value: Double;
....
if not TryStrToFloat(str, value) then
begin
  // handle error in some appropriate way
end;
// do something with value

当输入字符串包含一个十进制分隔符时,尝试StrutoLoT而不是Strutt,并且您需要一个正确类型扩展的变量而不是整数。您所搜索的单词是“浮点”或“浮点号”。如果你要编写更复杂的代码,毫无意义的变量名会让你发疯。在这里谈论十进制数时要小心。该术语通常用于表示十进制基数,而不是二进制基数。例如,在Delphi中,十进制数类型是
货币
。与二进制浮点非常不同。或者,如果精度很重要,请使用我的十进制类型:。有28个有效位(或者更准确地说,是96位尾数/有效位)。@RudyVelthuis在这里几乎离题了。我希望提问者不会认为你的十进制类型是解决问题的方法不确定这是否离题。使用浮点运算时,您可能会遇到诸如“为什么
0.1+0.1+0.1=0.3
?”之类的问题。我的十进制类型不会发生这种情况。;-)@鲁迪,那又怎样?您可能还会遇到这样的问题,为什么我不能使用十进制类型执行trig?+1,这是每个人在将字符串转换为浮点值时应该学习的第一件事。