DWORD division Delphi / C++
DWORD division Delphi / C++
因此,在C++中,我可以执行以下操作:
DWORD count;
count = 3 / 1.699999;
cout << count;
这将导致:
1
然而,Delphi抱怨Cardinal和Extended不匹配。
var
count: DWORD;
begin
count := 3 / 1.6;
Writeln(inttostr(count));
因此,我必须对count := round(3 / 1.6)
进行四舍五入,结果为:
2
或截断导致的CCD_ 2
1
trunk真的是该走的路吗?是否有编译器开关需要切换?
你可能会认为用谷歌搜索这样的东西很容易,但相信我,事实并非如此。
谢谢你抽出时间!
C/C++只有一个算术除法运算符 Delphi有两个算术除法运算—— 您的C++代码正在执行浮点除法,然后将结果分配给不是浮点类型的 在Delphi中, 在这种情况下,C++代码的Delphi等价物是使用/
,但它的行为取决于传递给它的操作数类型。它可以执行整数除法和浮点除法div
用于整数除法,/
用于浮点除法。DWORD
,因此分配截断小数点:1 / 1.699999
是1.764706920415836
,它截断为1
。/
运算符返回一个Extended
,这是一种浮点类型。与C/C++不同,Delphi不允许将浮点类型直接分配给整型。您必须使用Round()
或Trunc()
。Trunc()
:var
count: DWORD;
begin
count := Trunc(3 / 1.699999);
Write(IntToStr(count));
最简单的方法是使用trunc(3 /1.699999).
。
另一种方法是在除法之前使用前面的乘法。
var
count: DWORD;
begin
count := 3;
count := (count*1000000) div 1699999;
Writeln(inttostr(count));
当然,为了避免溢出,count
应该<maxInt div 1000000
。
相关文章:
- 如何将unicode字符串从C++传递到delphi
- 从 delphi 调用 c++ 函数
- 从Delphi调用C++DLL时发生访问冲突
- 可以从本机代码(如C++/Delphi)中使用.netCore DLL
- 在 c++ 中创建 dll 并在 delphi 中调用的标准方法
- 将 Delphi 的字符串转换为 std::字符串用于C++
- 从C++调用 Delphi DLL 函数
- 如何正确填充并将动态数组发送到Delphi中C 中的功能
- 可以将Delphi dll用于C#
- Delphi / C 构建器 - 在TDBGrid中设置活动 /选择的行颜色
- Invoke JNI_OnLoad from Delphi
- 从C++调用 Delphi DLL IStream 参数的问题
- 我将类型库(.tlb)导入到Delphi中,但函数参数似乎不正确.我应该如何解决它
- 如何将C/C 回调函数转换为Delphi
- 来自C DLL的视觉编辑Delphi记录
- 将C 回调功能转换为Delphi
- 如何在 c++ 中复制 Delphi 的索引属性?
- Delphi 2007 EXE和C++DLL:调试输出:027D4FF8处的堆块在027D5009处修改,超过了请求的9
- DLL函数导出一个指针做Delphi程序
- "Error creating variant or safe array" in TClientDataSet.LoadFromStream() in Delphi