Extended 和 Double 的奇怪问题

zh

最近在做一个项目,其中有一段判断一个 Extended 浮点数是否为整数的代码。我用如下方式实现:

function IsInt(F: Extended): Boolean;
begin
result := Trunc(F)-F = 0; //整数部分等于自身
end;

测试了许多样例都过了,唯独这个没过:

IsInt(4.000000002*1000000000); //False

调试时发现: Trunc(F) 居然等于 4000000001!开始以为是精度的问题,找了许多资料也没能解决。后来将 Extended 换成了 Double,就通过了。百思不得其解中。

READ MORE

MySQLDump 导出时不加锁

zh

在 SAE 上进行应用开发时,常常需要导入数据库,这时候就需要用 MySQLDump 工具进行本地数据库导出。

首先 MySQLDump 最基本的语法是这样的 mysqldump <database_name>,执行之后可以在控制台上看到 SQL 源码。但我第一次尝试将导出的源码上传至 SAE 时 SAE 却报错,原因是 SAE 的数据库管理不支持 LOCK 和 UNLOCK 语句。曾有一段时间,我是手动一行行删除 LOCK 语句。。30 多张表那叫一个蛋疼。。后来,我翻阅了 mysqlDump 的 help 文档,发现可以添加这么一个参数--ADD-LOCKS=FALSE。几经尝试后发现果然没有 LOCK 语句了。在此记录下整句命令:

mysqldump --add-locks=FALSE -uroot -p <database_name> > example.sql
READ MORE