非常小的问题!如何使一个有除号的计算表达式的结果是浮点数形式?

cfqmxh 2004-07-02 03:15:26
如:一表达式为
AnsiString aa = 12/5;
我用一Query1写了一个语句:
Query1->close();
Query1->SQL->Clear();
Query1->SQL->Add("Select "+ aa + " as Result");
Query1->Open();
这样就得到结果:Query1->FieldByName("Result")->AsFloat;
但只得到整数部分:2,小数部分没了;
请问如何才能得到保留两位的一浮点数:2.40;
...全文
286 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfqmxh 2004-07-09
  • 打赏
  • 举报
回复
我现在的做法也是判断一下 / ,遇到是/时则/后的数字加上0.0001,这样一来计算出来结果就是浮点数了,而我数据库里保留是两位,这也能将多计算出来的尾数截掉.不过我想知道有没有更好的办法?
Lonelywolf1899 2004-07-09
  • 打赏
  • 举报
回复
判断一下 / ,然后。。。
cfqmxh 2004-07-09
  • 打赏
  • 举报
回复
我确实是想将字符串"3+8/5"转换成表达式进行运算,由于该表达式是字符串我只有通过Query来得到结果了:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("Select 3+8/5 as Result");
Query1->Open();
这样就得到结果:
Query1->FieldByName("Result")->AsFloat;
只是结果是4,不是4.6,8/5等于1,不是1.6了.
我就是想求得怎么计算其结果才是4.6?主要是运算到除法时出错!
cfqmxh 2004-07-09
  • 打赏
  • 举报
回复
我还是有我的老办法,不过如果那位能解决我的问题请给我发短信,我另开贴送分!结帖!
tl007 2004-07-09
  • 打赏
  • 举报
回复
用这个试
AnsiString aa = FormatFloat("0.00",(12*1.0)/5);
叶子哟 2004-07-05
  • 打赏
  • 举报
回复
这个好难,你得找找编译的原理了
cfqmxh 2004-07-05
  • 打赏
  • 举报
回复
surname(nv)你好:
我现在有一个字符串:AnsiString Str = 3+8/5;然后将Str的最后值4.6赋予一float Result;
那我该怎么办才能做到呢?
surname 2004-07-05
  • 打赏
  • 举报
回复
你为什么在SQL 里面计算呢?
在BCB环境计算不行吗~~

CString 是VC的~
AnsiString 才是BCB 的
cfqmxh 2004-07-05
  • 打赏
  • 举报
回复
CString str;
str.Format("select %2f as Result",aa);
Query1->SQL->Add(str);
怎么在C++Builder 中语法通不过?
无CString定义,还有Format的结构参数不对,能否请您给一个用C++Builder写的完整的能正常运行的实现代码,我急需用!谢谢!
fyhui 2004-07-05
  • 打赏
  • 举报
回复
不明白你的意思
为什么不用AnsiString str=3+8/5.0
有什么问题吗?
难道你想做表达式解析吗?想把字符串“3+8/5“转换成表达式进行运算吗
MEFULEU 2004-07-02
  • 打赏
  • 举报
回复
AnsiString aa = 12/5.;
cfqmxh 2004-07-02
  • 打赏
  • 举报
回复
aa是用于干啥的?
悲酥清风 2004-07-02
  • 打赏
  • 举报
回复
CString str;
str.Format("select %2f as Result",aa);
Query1->SQL->Add(str);
cfqmxh 2004-07-02
  • 打赏
  • 举报
回复
关键是形成的表达式是一个字符串,无法在其中加一个(float).即使强制加上后也不能起作用.
叶子哟 2004-07-02
  • 打赏
  • 举报
回复
随便在哪个计算的数据前加一个(float)就行了
cfqmxh 2004-07-02
  • 打赏
  • 举报
回复
不能这样做!因为我的数字是从很多地方取过来然后加上运算符而形成表达式的,预先也不知道运算符是什么,如:
有可能是:12+3/8,还有是:8*3-2/5等等.
有没有办法将组成的运算表达式计算出来,别的都行了,就是遇到除号时结果不正确!帮忙!谢谢!
叶子哟 2004-07-02
  • 打赏
  • 举报
回复
ROUND(12.0/5,2)
surname 2004-07-02
  • 打赏
  • 举报
回复
AnsiString aa = 12/5.0;

就可以了
这是SQL 的问题~~~

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧