[英]How can I turn off Exponenntial Notation in C?
please enter num1 , op , num2
2e2+6
result= 206.000000
Process returned 0 (0x0) execution time : 8.657 s
Press any key to continue.
(如何使用)......任何方式關閉這個!
您不能直接執行此操作, scanf
函數系列沒有標准格式說明符拒絕科學記數法(例如1e3
)用於float
或double
並且沒有直接方法可以“關閉” scanf
接受科學記數法中的數字.
您可以做的是將輸入讀取為字符串。 然后您檢查字符串是否包含 'E' 或 'e' 並拒絕如果是這種情況。
這種天真的方法應該讓你知道你可以做什么:
#include <stdio.h>
#include <string.h>
int main()
{
float x = 0;
do
{
char buffer[100];
scanf("%s", buffer);
if (strchr(buffer, 'E') != NULL || strchr(buffer, 'e') != NULL)
{
printf("Rejected\n");
}
else
{
sscanf(buffer, "%f", &x);
break;
}
} while (1);
//...
}
除了明確檢查E
和e
的存在之外,您還可以檢查是否存在任何非數字和非小數點字符,如果緩沖區包含[0123456789.]
未包含的任何字符,則 IOW 拒絕。
當然,您最終應該將此功能放入一個函數中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.