求助,如何计算k=i×j的问题(100分)

  • 主题发起人 主题发起人 lnlj
  • 开始时间 开始时间
L

lnlj

Unregistered / Unconfirmed
GUEST, unregistred user!
i:=integer;
j=0.45
i:=strtoint(edit1.text);
ru如何编写k=i×j的程序代码,要精确的计算结果,不要j×100,谢谢!
 
要把所有的数字都折成字符串,然后一位一位的算。
再把结果保存成字符串,最后再一起拼成结果。
我见过有人做的大数相乘精度可达到几百位
 
为什么不用其他类型定义这个变量呢?
比如float或者real?
 
>阿西喊佛
他要的是精确的计算结果
用float能精确到多少位??
10位?20位?比如求20!
用float也许可以得出 2.432e+18
但不会得出 2432902008176640000
 
k是什么类型的?把K定义成double不行吗?
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:=floattostr(strtofloat(Edit1.text)*strtofloat(Edit2.text))
end;

end.


object Form1: TForm1
Left = 192
Top = 107
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Edit1: TEdit
Left = 184
Top = 88
Width = 121
Height = 21
TabOrder = 0
Text = '0.1212'
end
object Edit2: TEdit
Left = 328
Top = 88
Width = 121
Height = 21
TabOrder = 1
Text = '2.121'
end
object Button1: TButton
Left = 256
Top = 216
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 2
OnClick = Button1Click
end
object Edit3: TEdit
Left = 256
Top = 280
Width = 121
Height = 21
TabOrder = 3
Text = 'Edit3'
end
end
 
试一下
是不是你要的

不用double 或 single 就不会出现 小数的问题
 
如果小数位不大于4位,可以用currency类型
 
同意楼上的意见.
currency类型是固点的,计算起来比浮点精确
 
后退
顶部