[問題] 九個1乘九個1等於多少?

看板C_and_CPP作者 (假斯汀)時間15年前 (2009/04/15 22:33), 編輯推噓5(506)
留言11則, 8人參與, 最新討論串1/1
一開始是用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

04/15 22:49, , 1F
自己寫大數?
04/15 22:49, 1F

04/15 22:51, , 2F
python xd
04/15 22:51, 2F

04/15 22:55, , 3F
這數字換成二進制需要54bit, Int64應該夠用...
04/15 22:55, 3F

04/15 22:56, , 4F
不過你用double的話恐怕會被rounding吃掉一些...
04/15 22:56, 4F

04/15 23:00, , 5F
因為double提供16位有效數寫, 而這數字有17位...
04/15 23:00, 5F

04/15 23:01, , 6F
04/15 23:01, 6F

04/15 23:20, , 7F
long long 不會錯阿 不需要開浮點的話就用吧
04/15 23:20, 7F

04/16 00:43, , 8F
12345678987654320一定錯 個位一定是1
04/16 00:43, 8F

04/16 00:49, , 9F
我想單純只是因為matlab的預設類別是real
04/16 00:49, 9F

04/16 01:18, , 10F
perl -e 'use bignum;print 111111111*111111111,"\n"'
04/16 01:18, 10F

04/16 11:08, , 11F
GMP
04/16 11:08, 11F
文章代碼(AID): #19vV0ZuB (C_and_CPP)