我已經開始學習 C,并且正在參考一本書和 freeCodeCamp YouTube 頻道。我輸入了一個基本的 C 程式來計算工資總額。通常,程式運行沒有問題,但有時我必須輸入的一個值在命令提示符中被更改。下面給出了問題的代碼和示例。
//calculate gross salary of a nondescript guy who is totally not Clark Kent
#include <stdio.h>
#include <stdlib.h>
int main()
{
float bs, da, hra, gs;
printf("\nEnter basic salary of guy: ");
scanf("%f", &bs);
da = 0.4 * bs;
hra = 0.2 * bs;
gs = da hra bs;
printf("Basic salary of Guy = %f\n", bs);
printf("Dearness allowance = %f\n", da);
printf("House Rent Allowance = %f\n", hra);
printf("Gross Salary = %f\n", gs);
return 0;
}
命令提示符輸出螢屏
我不知道為什么會這樣。我嘗試了其他值,就像我說的那樣,程式運行得很好。我是新手,所以這可能是我尚未學習的價值觀的某種理論限制,但任何幫助將不勝感激。PS 如果重要的話,我使用 Code::Blocks 作為我的 IDE。
uj5u.com熱心網友回復:
您可以嘗試使用呼叫的資料型別,double而不是因為它具有更高的精度(更具體float的精度是 的兩倍)。float
您必須知道如何表示float或double表示,因為根據 IEEE 754 標準使用浮點數時,值0.59392實際上作為值0.593900024890899658203125存盤在記憶體中,而數字123456789存盤為123456792,因此還有其他型別的小數可以解決這個問題它們之間的區別如下的問題
十進制表示在談論小數字時給出了較低的精度,但在大數字和高精度時提供了更高的范圍,大多數使用的 2 個標準是二進制整數十進制 (BID) 和密集十進制 (DPD)
在談論大數字但范圍較小時,float 和 doubles 比 Decimal 提供更高的精度,它們遵循 IEEE 754 標準
定點型別的范圍最低,但它們是最準確的,也是最快的
但請記住,只有doubleandfloat是 C 標準,而_Decimal64or_Fract或任何其他資料型別是編譯器特定的。
您可以參考任何在線教程來學習如何在記憶體中表示float和表示,就像這個小教程一樣decimal
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512714.html
標籤:C
上一篇:在本地宣告NULLvoid指標并將其傳遞給ctypes中的API
下一篇:在c中添加陣列元素
