數字轉換成字元(C )

2021-09-30 03:51:00 字數 1552 閱讀 7382

昨天數字轉換字元的問題捆饒了我一天,可能大家聽了會笑話我,這麼簡單的問題一天都沒有搞定,不過沒關係昨天用了乙個下午又加上晚上的一些時間算是能解決部分的問題了。

問題情況說明:從資料庫讀取乙個float型別的資料,然後通過實體欄位的繫結顯示在介面上(要求不能有科學記數法)。

問題解決:首先要先了解各個型別的範圍。

decimal  理論上為±1.0 × 10-28 到 ±7.9 × 1028   但是實際可以為 1.0x1029 - 1  有效數字最大只能有29位,否則型別轉換時會出現錯誤。

double  它的範圍是我接觸的所有型別中最大的 ±5.0 × 10-324 到 ±1.7 × 10308  並且精度也是最高的 15 到 16 位 。但是它轉換成字串時一般顯示15位有效數字,經過處理最大也只能有17位有效數字。

float   它的範圍為  ±1.5 × 10-45 到 ±3.4 × 1038 界於double和decimal之間 精度為

7 位 。

int   它的範圍為 -2,147,483,648 到 2,147,483,647 這個是一般比較常用的。

decimal 轉換成字串很簡單 直接用 tostring()方法即可,但需要注意的是,它的有效數字為29位,若整數字已經有28位了,還要小數字精確到兩位這個是做不到的。在有效的數字範圍可以使用

math.round(_ddecimal, 2) 保留精確的小數字。

double轉換成字串,目前還沒有比較好的辦法,暫時的解決辦法為:

首先檢測double的資料是否在decimal的範圍,若在則先轉換成decimal然後在轉成字元(這樣做的弊端是顯示出來的有效數字為15位,後面的就會四捨五入,但是顯示出來的是十進位制的數字而不是科學記數)。若大於decimal的範圍則用double的tostring方法,但是這樣顯示的會是科學記數法的數字,下面是微軟官方的說法:

預設情況下,返回值只包含 15 位精度,但內部維護的最大精度是 17 位。如果此例項的值超過 15 位,則

tostring

返回 positiveinfinitysymbol

或 negativeinfinitysymbol

,而不是預期的數字。如果要求更高的精度,請用「g17」或「r」格式規範指定 format

;前一種格式總是返回 17 位精度;而後一種格式在數字可以用 15 位精度表示時返回 15 位精度,在數字只能用最大精度表示時返回 17 位精度

double _ddouble = convert.todouble("12345678932165445.6598723");

string _sstring = string.empty;

decimal _ddecimal = convert.todecimal("79000000000000000000000000000");

if (_ddouble > convert.todouble(_ddecimal))

}else

return _sstring;

float的轉換方法和double的基本相似,也可轉成double然後在處理。

int的轉換就不用多說了,沒有超過15個有效數字,則直接轉換即可。

數字轉換成字串

題目 給定乙個數字,按照如下規則把它轉化成字串 0 翻譯成 a 1 翻譯成 b 2 翻譯成 c 25 翻譯成 z 乙個數可能有多種翻譯,比如數字 11 可以翻譯成 bb 也可以翻譯成 l 例如數字 12258 有5 中不同的翻譯 bccfi bwfi bczi mcfi mzi 這五種。我們現在輸入...

js字串轉換成數字,數字轉換成字串

將字串轉換成數字,得用到parseint函式。parseint string 函式從string的開始解析,返回乙個整數。舉例 parseint 123 返回 123 int parseint 1234 返回 1234 int 如果解析不到數字,則將返回乙個nan的值,可以用isnan 函式來檢測 ...

js字串轉換成數字,數字轉換成字串

js字串轉換成數字 將字串轉換成數字,得用到parseint函式。parseint string 函式從string的開始解析,返回乙個整數。舉例 parseint 123 返回 123 int parseint 1234 返回 1234 int 如果解析不到數字,則將返回乙個nan的值,可以用is...