Re: [問題] 科學表示法

看板MacDev作者 (←這人是超級笨蛋)時間11年前 (2014/06/26 10:43), 11年前編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《Starwindd (原PO大叔)》之銘言: : 請問一下,obj-c裡頭有沒有方法可以直接把一個數字轉換成科學記數法, : a*10^b ,並且分開知道 a 跟 b 的值? : 我不是要問表示成 3.75E+06 這個方法,而是要分開得到 3.75 跟 6 這 : 兩個值。 : 因為想要在畫面上顯示 3.75 * 10^6 這樣,怕有些使用者看不懂用E的表 : 示法。 : 我試著用 NSDecimalNumber ,不過沒成功... 所以你其實只是想要把 3750000 (舉例) 轉成 3.75 * 10^6 這個字串 不見得一定要得到 3.75 與 6 這兩個數字吧? 這樣的話可以是自己寫一個 NSFormatter subclass 以你的需求而言, 最簡單的方法應該是直接繼承 NSNumberFormatter 然後複寫 -stringFromNumber: (與 -numberFromString:, 如果你需要反向轉換) 因為 NSNumberFormatter 已經可以產出 3.75E6 這種格式 (把 numberStyle 設成 kCFNumberFormatterScientificStyle) 所以其實你可以直接偷懶... - (NSString *)stringFromNumber:(NSNumber *)number { NSString *s = [super stringFromNumber:number]; s = [s stringByReplacingOccurrencesOfString:@"E" withString:@" * 10^"]; return s; } 3750000 | NSNumberFormatter v 3.75E6 | Subclass v 3.75 * 10^6 大概是這樣做 小於 1 的數字會變成類似 3.75 * 10^-6 如果你還希望有更客製化的輸出就用 NSRegularExpression 吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.94.57 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1403750584.A.FE3.html ※ 編輯: uranusjr (140.112.94.57), 06/26/2014 10:44:50

06/26 21:20, , 1F
感謝。其實我是希望把它變成 3.75x10<sup>6</sup> 然後
06/26 21:20, 1F

06/26 21:20, , 2F
用UIWebView去顯示出來。不過同樣概念應該可以做。謝謝
06/26 21:20, 2F

06/26 22:49, , 3F
轉成nsatributedstring, 次方用vertical-align:super
06/26 22:49, 3F
文章代碼(AID): #1JguYu_Z (MacDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1JguYu_Z (MacDev)