首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

UNIX C的有关问题

2012-03-12 
UNIX C的问题在UNIXC通过存储过程操作数据库(sybase)表A有一个字段B,类型是numeric(20,4),整数部分最多可

UNIX C的问题
在UNIX   C通过存储过程操作数据库(sybase)

表A有一个字段B,类型是numeric(20,4),整数部分最多可以有16个9

在C程序里有一个字符串“9999999999999999.0000”   (16个9)

double   lAmount   =   0.0;
lAmount=   strtod   ( "9999999999999999.0000 ",   (char   **)   NULL);

在把lAmount传递给存储过程,插入到表A的字段B内。

但是在调试中我们发现,strtod   后lAmount=10000000000000000.0,整数部分有17位,一旦向表A插时,就溢出了

现在的问题是double不能表示9999999999999999.0000,该如何解决?

[解决办法]
内置类型精度问题,恐怕很麻烦 ...
[解决办法]
如果可以,
是否可以考虑在数据库中存放 string ...
[解决办法]
我这里得出的lAmount = 9999999999999998.000000

环境:VC++6.0
[解决办法]
反正是特定值,构造 SQL 时候直接串接文本,不要转 double
[解决办法]
还不是一样有问题,数据一样不正确 ...

或者把数据分段存储吧
[解决办法]
存字符串比较保险
[解决办法]
总之需要完全准确的高精度运算别用float和double。
[解决办法]
不懂,
[解决办法]
严重关注
[解决办法]
好像double的精度没有16位的。
[解决办法]
我说的16位,指的是有效数字
[解决办法]
insert 的时候 使用 和oracle to_number函数类似的函数

热点排行
Bad Request.