作者SiriusJinn (假斯汀)
看板C_and_CPP
标题[问题] 九个1乘九个1等於多少?
时间Wed Apr 15 22:33:03 2009
一开始是用labview写的
发现答案是 12345678987654320 直觉应该是 12345678987654321
用c写也是一样
================================================
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double a=111111111,b;
b=a*a;
printf("%.lf \n",b);
system("pause");
return 0;
}
===============================================
int64 会不够吗?
用matlab试了一下,直接打111111111*111111111 值出不了,只好直接试大小
===============================================
>> x=12345678987654321;
>> int64(x)
ans =
12345678987654320
===============================================
不知大家有没有什麽解决的办法呢?
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.90.170
※ SiriusJinn:转录至看板 MATLAB 04/15 22:34
※ SiriusJinn:转录至看板 Electronics 04/15 22:34
1F:→ windincloud:自己写大数? 04/15 22:49
2F:→ iamivers0n:python xd 04/15 22:51
3F:推 leicheong:这数字换成二进制需要54bit, Int64应该够用... 04/15 22:55
4F:→ leicheong:不过你用double的话恐怕会被rounding吃掉一些... 04/15 22:56
5F:推 leicheong:因为double提供16位有效数写, 而这数字有17位... 04/15 23:00
6F:→ leicheong: 字 04/15 23:01
7F:推 rogerable:long long 不会错阿 不需要开浮点的话就用吧 04/15 23:20
8F:→ netsphere:12345678987654320一定错 个位一定是1 04/16 00:43
9F:推 sunneo:我想单纯只是因为matlab的预设类别是real 04/16 00:49
10F:推 WalkingIce:perl -e 'use bignum;print 111111111*111111111,"\n"' 04/16 01:18
11F:→ adrianshum:GMP 04/16 11:08