gpt4 book ai didi

objective-c - 计算 NSString 中任意重复十进制数的数量

转载 作者:行者123 更新时间:2023-12-03 16:41:07 28 4
gpt4 key购买 nike

在我的代码中,我正在处理包含 NSNumber 值的 NSString。这个 NSNumber 值可能可能是一个重复的十进制数(例如 2.333333333e+06),以字符串格式缩写为“2.333333”。它也可以是终止数(例如 2.5)、负数或无理数(2.398571892858...)(此处仅处理小数)

我需要有一种方法来确定字符串中是否有重复的数字(或者 NSNumber,如果需要的话)。在我的代码中,我无法知道重复数字是什么,因为它是用户开始计算的结果。我尝试过这个 for 循环(见下文),但由于我对字符串索引/范围/长度缺乏经验,它无法按照我想要的方式工作。

BOOL repeat = NO; //bool to check if repeating #
double repNum, tempNum; //run in for loop
NSString *repeating = [numVal stringValue]; //string that holds possible repeating #
for (int i = 3; i <= [repeating length]-3; i++) { //not sure about index/length here
if (i == 3) {
repNum = [repeating characterAtIndex:i];
}
tempNum = [repeating characterAtIndex:i];
if (tempNum == repNum) {
repeat = YES;
} else {
repeat = NO;
}

}

此代码无法按我希望的方式工作,主要是因为我还必须考虑字符串中的负破折号和不同数量的数字(13 1/3 与 1 1/3)。我使用 modf 函数将整数与小数分开,但这对我来说也效果不佳。

提前谢谢您。如果我可以澄清任何事情,请告诉我。

编辑:

此代码用于查找多项式(二次公式)的不同解决方案。希望这有助于将其置于上下文中。看这里。 (输入示例)

NSNumber *firstPlusSolution, *secondMinusSolution;
NSString *pValueStr, *mValueStr;

firstPlusSolution = -(b) + sqrt(square(b) - (4)*(a)*(c)); //a, b, c: "user" provided
firstPlusSolution /= 2*(a);

secondMinusSolution = -(b) - sqrt(square(b) - 4*(a)*(c));
secondMinusSolution /= 2*(a);

pValueStr = [firstPlusSolution stringValue];
mValueStr = [secondMinusSolution stringValue];

if ([NSString doesString:pValueStr containCharacter:'.']) { //category method I implemented

double fractionPart, integerPart;
fractionPart = modf(firstPlusSolution, &integerPart);

NSString *repeating = [NSString stringWithFormat:@"%g", fractionPart];
int repNum, tempNum;
BOOL repeat = NO;

//do for loop and check for negatives, integers, etc.
}

if ([NSString doesString:mValueStr containCharacter'.']) {
//do above code
//do for loop and check again
}

最佳答案

使用C。取小数部分。转换为具有已知精度的字符串。如果字符串长度表明最后一位数字丢失,则它不会重复。使用 NSString-UTF8String 转换字符串。去掉最后一位数字(可能是舍入或实际的浮点算术错误)。使用函数 int strncmp ( const char * str1, const char * str2, size_t num ) 在字符串本身内执行比较。如果结果是8个字符长,并且最后2个字符与前2个字符匹配,那么前6个字符是否会被视为重复?

假设该分数知道您的愿望:

• 可能性 1:使用分数。输入分数。用分数计算。输出分数。如有必要,请扩展 C++ 分数类的众多示例之一并使用它。

• 可能性 2:选择远小于两倍的精度。从结果中取一个分数。减少允许基于精度进行舍入的分数。

关于objective-c - 计算 NSString 中任意重复十进制数的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835242/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com