delphi整型变量相除,要求结果为小数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi整型变量相除,要求结果为小数相关的知识,希望对你有一定的参考价值。

sqlsever表中字段‘概率’的数据类型是decimal9(18,6),现在用delphi将两整型变量相除,所得结果存放在表中。例如
var
a,b:integer;
p0:double;
begin
p0:='a/b'---------我知道这么写肯定不对,正确的是怎样呢?
adoquery1.SQL.add('update table1 set p=p0 where 。。。);

var
a,b:integer;
p0:double;
begin
p0:=a/b; // a/b 得的值会自动转为double赋给p0的. 如果要保留小数位数要用到Format函数.
adoquery1.SQL.add('update table1 set p='+currtostr(p0)+' where.....'); //sql中这么写,字符串的拼接问题,要把p0转为字符串.
参考技术A procedure TForm1.Button1Click(Sender: TObject);
var
m , n : Integer;
x : double;
begin
m := StrToInt(edt1.Text);
n := StrToInt(edt2.Text);
x := m/n;
edt3.Text := FloatToStr(x);
end;
没搞懂你要干什么,不过好像就是数据转换那你写的不对,上面的这个例子可以达到你的要求啊,希望能帮助你.....

参考资料:self.knowledge

参考技术B 好像办不到吧,为什么要用整形变量得到小数类型呢?规定你要这样做吗? 参考技术C 你写的是对的,只是SQL 不对

循环小数——模拟除法

题目

输入整数a和b(0 ≤ a ≤ 3000,1 ≤ b ≤ 3000),输出a / b的循环小数表示以及循环节的长度。例如a = 5,b = 43,小数表示为0.(116279069767441860465),循环节的长度为21。

解题思路

用模拟除法,并用数组模拟每次存储每次相除的结果,每除一次与前面的所有元素比较一次,如果与数组中某一元素相等,即可停止循环,因为此时循环节已经找到,并用变量m、n分别记录循环节的起始和终止位置,然后就是按规定的格式输出。

代码实现

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 using namespace std;
 6 
 7 const int maxn = 3000 + 10;
 8 int a, b;
 9 int frac[maxn],pos[maxn],yu[maxn];
10  
11 int main()
12 {
13     while (scanf("%d%d",&a,&b) == 2)
14     {
15         int tmp = a;
16         memset(frac, 0, sizeof(frac));
17         memset(pos, 0, sizeof(pos));
18         memset(yu, 0, sizeof(yu));
19 
20         int cnt = 0;
21         frac[cnt++] = a / b;
22         a = a % b;
23 
24         while (!pos[a] && a)
25         {
26             yu[cnt] = a;             //记录每个余数
27             pos[a] = cnt;            //记录每个余数的位置
28             frac[cnt++] = (a * 10) / b;    //记录商
29             a = (a * 10) % b;
30         }
31 
32         printf("%d %d = %d.", tmp, b, frac[0]);
33         for (int i = 1; i <= 50 && i < cnt; i++)
34         {
35             if (a & yu[i] == a)  printf("(");  //利用了循环节前一个和循环节最后一个的余数相同
36             printf("%d", frac[i]);
37         }
38         if (!a)
39             printf("(0");
40         if (cnt > 50)
41             printf("...");
42         printf(")
");
43         printf("   %d = number of digits in repeating cycle

", a == 0 ? 1 : cnt - pos[a]);
44     }
45     return 0;
46 }

参考链接:https://blog.csdn.net/qiweigo/article/details/43051043

 

以上是关于delphi整型变量相除,要求结果为小数的主要内容,如果未能解决你的问题,请参考以下文章

运算符

delphi 整型赋值为字节,

java怎么让两个数相除的商保留25位小数

两数相除,当除不尽时,如果商用循环小数表示,那么要用(大于号,小于号还是等于号)

delphi 中“/”和div的区别是啥?

java里怎么算除法?