1 在C 中的數字 int double

2022-04-15 13:11:01 字數 1589 閱讀 6052

在之前本著能懶就懶的原則,所以導致一些本來該總結的也不總結,該記錄的也不記錄的知識點總是很快忘記的一乾二淨。

今天,決定了開始記錄,我也不敢說可以堅持多久,頻率嘛,肯定不是每天都記錄(還是懶),但是目前想來一周2-3次發部落格記錄學習吧。

如果有看到我偷懶的,可以在訊息裡打醒我(希望你們不會記得)這裡的內容我大概也不會在寫第二遍了。

追溯原因是今天看了某個大佬或者小佬的分享後決定再次回歸從c#的基礎中在跑一遍,(應該很快了)然後從中繼續受益,不多說了。

進入正題

然後從最基礎的看起,發現了即使是最基礎的也能讓我有所收穫。記錄一下,雖然可能多年後在看是個笑話,但這也算今天的乙個目標和成就把。

c# 整數型別不同於數學上的整數的另一點是, int 型別有最小限值和最大限值。 將此**新增到 main 方法,

看看這些限制的執行機制

1

int max = int

.maxvalue;

2int min = int

.minvalue;

3 console.writeline($"

the range of integers is to

");

之前雖然也知道int.maxvalue;

但是這麼久不用會忘,就這一點也夠我寫進來了

敲黑板,不看答案有誰知道int的最大值是幾位數嗎?(我也不知道)

2147483647

-2147483648

好了,問題來了,是不是覺得特別無聊,看這個幹什麼。那麼問乙個問題,如果max + 1 或者 min -1 會怎麼樣呢?

這樣估計能打出來的就沒幾個人了把。

報錯,拋異常?越界,引數錯誤,編譯錯誤。。。。。。

在不看答案之前其實我也不知道

答案是-2147483648

2147483647

竟然是正負數反轉,好吧。之前從來沒注意過,之前總以為不是隨便用,一般也不會出問題,但是現在終於明白為什麼要注意區分了,因為這個代價有點大。

官方文件給出的說明是

可以看到,答案非常接近最小(負)整數。 與 min + 2 相同。 加法運算會讓整數溢位 允許的值。 答案是乙個非常

大的負數,因為溢位從最大整數值覆蓋回最小整數值。

收穫了又

其他就不多贅述了,

同理,我馬上想到並且去試了試 double和decimal,果然,他們也有maxvalue和minvalue

圖中,前兩個是int的最大最小值----中間倆是double,後面的是decimal的

我們都知道decimal的精度比double大,那麼在正常使用中為什麼不都用decimal而還用double呢?、

如果你夠細心可能就發現了,在上圖中,中間double的那兩項的範圍比decimal大,但是decimal的精度要高於double。在官方文件中是這麼說的

好了,到點了,不要問我到什麼點兒了。今兒總結了一堆了,溫故知新,後面繼續。

在C 中實現BigEndian的數字

在我們的pc機中,c 的數字是littleendian的,導致在做網路協議和和檔案解析時有許多不便,因此,我寫了個bigendian的數字的類,這裡記錄一下,以後還會經常用到。static class bigendianuinthelper public static byte tobytes ui...

在C 中實現BigEndian的數字

在我們的pc機中,c 的數字是littleendian的,導致在做網路協議和和檔案解析時有許多不便,因此,我寫了個bigendian的數字的類,這裡記錄一下,以後還會經常用到。static class bigendianuinthelper public static byte tobytes ui...

在C 中實現BigEndian的數字

在我們的pc機中,c 的數字是littleendian的,導致在做網路協議和和檔案解析時有許多不便,因此,我寫了個bigendian的數字的類,這裡記錄一下,以後還會經常用到。static class bigendianuinthelper public static byte tobytes ui...