我目前正在 Xcode 中开发一个 iOS 应用程序,并且我想出了计算有效数字位数的代码。它是用 C++ 编写的,但我做了一些更改以使其正常工作。每当我输入零值时,它就会崩溃,但其他任何东西都可以正常工作。
我的代码如下:
- (IBAction)sigFigCount:(UITextField *)thetextfield
{
length = 0;
if (thetextfield == _textfield1)
{
if ([thetextfield.text length] > 0)//If TextField Has More Than 0 digits...
{
text1 = std::string([_textfield1.text UTF8String]);
while (text1.at(0) == '0' || text1.at(0) == '.')//Trim Leading Zeros...
{
text1 = text1.substr(1);
}
length = text1.length();
decimal = text1.find('.');
if (decimal >= 0 && decimal < text1.length())//Dont count decimal as sig fig...
{
length -= 1;
}
if ([[_textfield1 text] doubleValue] == 0.0)
{
NSLog(@"HERE");
self.display3.text = @"1";
}
NSString *siggy = [NSString stringWithFormat:@"%i", length];
self.display3.text = siggy;
}
if ([thetextfield.text length] == 0)
{
length = 0;
NSString *ifzero = [NSString stringWithFormat:@"%i", length];
self.display3.text = ifzero;
}
if ([[thetextfield text] doubleValue] == 0.0)
{
newLength = 1;
NSString *zeroVal = [NSString stringWithFormat:@"%i", newLength];
self.display3.text = zeroVal;
}
NSString *norm = [NSString stringWithFormat:@"%i", length];
self.display3.text = norm;
}
}
请帮助,我相信它与数字在内存中的表示方式有关......但是当我把它放在一个while语句中时,NSLog工作......任何输入都表示赞赏。
谢谢你