[問題] 1.0 * -1.0 = 1.0?
開發平台(Platform): (Ex: Win10, Linux, ...)
Win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Leetcode C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
None
問題(Question):
目前正在寫Leetcode 399. Evaluate Division
其中我正在計算非直接連接的兩個節點它們的值
else if(eq[idx1][loopVal] == -1.0)
{
eq[idx1][loopVal] = eq[idx1][loop] * eq[loop][loopVal];
printf("%d %d %d %1.2f %1.2f %1.2f %1.2f\n", idx1, loopVal, loop,
eq[idx1][loop], eq[loop][loopVal],
eq[idx1][loopVal],eq[idx1][loop]*eq[loop][loopVal]);
eq[idx1][loopVal] = eq[idx1][loopVal] < 0? -1.0 : eq[idx1][loopVal];
}
但其中卻發現output出現
0 2 2 1.00 -1.00 1.00 -1.00
倒數兩個浮點數
前面是eq[idx1][loopVal]
後面是eq[idx1][loop]*eq[loop][loopVal]
而我printf上一行就是eq[idx1][loopVal] = eq[idx1][loop] * eq[loop][loopVal];
明明後面那個顯示他乘出來確實是-1.0
結果放回eq[idx1][loopVal]就變成+1.0了??
完全理解不能 求解 感謝各位
預期的正確結果(Expected Output):
0 2 2 1.00 -1.00 -1.00 -1.00
錯誤結果(Wrong Output):
0 2 2 1.00 -1.00 1.00 -1.00
https://i.imgur.com/1FXNOLW.png

程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
else if(eq[idx1][loopVal] == -1.0)
{
eq[idx1][loopVal] = eq[idx1][loop] * eq[loop][loopVal];
printf("%d %d %d %1.2f %1.2f %1.2f %1.2f\n", idx1, loopVal, loop,
eq[idx1][loop], eq[loop][loopVal],
eq[idx1][loopVal],eq[idx1][loop]*eq[loop][loopVal]);
eq[idx1][loopVal] = eq[idx1][loopVal] < 0? -1.0 : eq[idx1][loopVal];
}
https://pastebin.com/qrg9RE6U
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.45.59 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1743577567.A.BA6.html
※ 編輯: handofn0xus (220.130.45.59 臺灣), 04/02/2025 15:11:54
推
04/02 18:48,
1天前
, 1F
04/02 18:48, 1F
→
04/02 18:49,
1天前
, 2F
04/02 18:49, 2F
→
04/02 18:50,
1天前
, 3F
04/02 18:50, 3F
→
04/02 18:50,
1天前
, 4F
04/02 18:50, 4F
推
04/02 22:35,
21小時前
, 5F
04/02 22:35, 5F
→
04/02 22:36,
21小時前
, 6F
04/02 22:36, 6F
推
04/03 01:02,
18小時前
, 7F
04/03 01:02, 7F
→
04/03 01:02,
18小時前
, 8F
04/03 01:02, 8F
→
04/03 01:02,
18小時前
, 9F
04/03 01:02, 9F
→
04/03 01:02,
18小時前
, 10F
04/03 01:02, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章