フィルタの値を計算しているアプリがあります。これらの値は通常、10^-9の値の範囲内です。現時点では、この計算の値はフロートに送信されます。この番号を標準形式で強制的に表示する簡単な方法はありますか?つまり、小数点以下が長いのとは対照的に、x * 10^-9です。よろしく
質問する
233 次
3 に答える
3
あなたはNSNumberFormatter
クラスが欲しいです。具体的には、numberStyle
プロパティをに設定しますkCFNumberFormatterScientificStyle
。何かのようなもの:
NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
numFormatter.numberStyle = kCFNumberFormatterScientificStyle;
NSString *result = [numFormatter stringFromNumber:[NSNumber numberWithFloat:someFloat]];
于 2012-11-29T12:42:34.420 に答える
2
標準形式の文字列を準備するための修飾子があります:%g
および%G
:
これは標準形式を強制しませんが、非常に大きい数と非常に小さい数は、末尾のゼロなしで標準形式になります。私が大胆にしたビットを見てください。
- %g
「double」引数は、科学形式または標準形式で出力されます。科学的記数法は、変換の結果の指数が-4未満、または精度よりも大きい場合にのみ使用されます。それ以外の場合は、標準表現が使用されます。科学的記数法では、指数を示す「e」は小文字です。精度は、必要な有効桁数(必ずしも小数点以下の桁数ではありません)を意味するものと見なされます。末尾のゼロは結果から削除され、小数点は数字が後に続く場合にのみ表示されます。
- %G
科学的記数法で指数を示す「E」が大文字であることを除いて、「%g」形式と同じです。
于 2012-11-29T13:03:51.340 に答える
0
float yourfloat = [insert here];
float display = yourfloat;
bool neg = false;
if (display < 0)
{
neg = true;
display *= -1;
}
int e = 0;
while (display < 1 && display > 0)
{
display *= 10;
e++;
}
if (e > 0)
NSLog(@"%f*10^-%d", display * (neg ? -1 : 1), e);
else
NSLog(@"%f", display * (neg ? -1 : 1));
もちろん、NSLog
を文字列に置き換えるか、出力が必要です。
于 2012-11-29T12:39:04.480 に答える