簡體   English   中英

讀取浮點數

[英]Reading floating point numbers

我正在嘗試讀取浮點數(命令行輸入)。 這是正確的方法嗎?

sscanf(argv[i], "%f", &float)

sscanf()argv元素一起使用是從命令行參數中提取float一種方法。 您還應該檢查返回值,以查看float是否實際上是從字符串中提取出來並存儲到變量中的。

也許更好的方法是使用strtod() ,因為您可以使用第二個參數執行更好的驗證。 您可以使用該指針檢查轉換中使用的最后一個字符是否為字符串中的最后一個字符。 即。 您可以檢查"3.5abc"包含有效的浮點數,但整個字符串不是一個有效的浮點數。

如果命令行輸入的意思是從stdin讀取輸入,那么這與argv無關,而應該使用scanf()fgets() + strtod()

請注意,還有atof函數,該函數本質上是strtod的版本,沒有提供額外的錯誤檢查功能。 從手冊頁來看只是: strtod(nptr, (char **) NULL); C99還提供了strtof()函數,該函數返回float而不是double 您可以為float分配一個double並對其進行隱式轉換,因此不要認為使用strtod()會引起問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM