Delphi如何直接取浮点数的幂 一个浮点数变量Val,如何通过Delphi的函数(注意是Delphi的函数而不是自定义的函数)直接取它的幂值?比如当Val:=101.3时,它的科学表达式形式为“1.013E+2”,我想得到它的幂值“2”当Val:=0.0103时,它的科学表达式形式为“1.013E-2”,我想得到的值是“-2” 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查了一下关于Math的单元函数,貌似没有直接支持的函数不知道其它单元有没有。如果实在没有,我会把分给算法效率最高的一位。 edit1.Text:=inttostr(round(log10(strtofloat(edit1.Text)))); 1、用mod,以1为分界值2、利用FormatFloat,再提取幂值 原来有函数function Log10(const X: Extended): Extended; { Log.10(X) := Log.2(X) * Log.10(2) }asm FLDLG2 { Log base ten of 2 } FLD X FYL2X FWAITend; 2 楼正解round(log10(101.3)) ---> 2round(log10(0.0103)) ---> -2 不知道Delphi的浮点数在不同型号的CPU(但仅限于X86或X64系列机)上是否采用的同一种格式,如果是的话,我倒是想直接分析浮点数的阶码得到幂。 x86的浮点遵循IEEE754标准,但是有单精度、双精度、扩展精度的差别,另外Delphi中还有real48自定义格式,你自己分析不会快的。 看来应该是Log10函数最快了,结贴给分! 4楼所贴是Log10函数的实现,只有4句汇编,速度应该是非常快的。 delphi 得idftp.put方法能否上传大于2G得文件? 求教animate Window 函数参数的定义 请教关于stringGrid 大家帮忙看看,这个SQL应如何写才能运行 图片的存取问题 那个有用fastreport打印这样报表的程序或方法啊 Delphi6问题个位帮帮忙! 错误:Left side cannot be assigned to! 呼唤高手 Delphi + SDK 怎样动态创建控件和设置属性? Delphi 出现privileged instraction的错误zenme ban 菜鸟虚心请教,关于发送封包问题,请各位赐教!!!!!谢谢!!!
不知道其它单元有没有。如果实在没有,我会把分给算法效率最高的一位。
2、利用FormatFloat,再提取幂值
function Log10(const X: Extended): Extended;
{ Log.10(X) := Log.2(X) * Log.10(2) }
asm
FLDLG2 { Log base ten of 2 }
FLD X
FYL2X
FWAIT
end;
round(log10(101.3)) ---> 2
round(log10(0.0103)) ---> -2