NSDeciamlNumber3.33插入数据库时变为0.32999999999999996sql是正确的,但是执行sql时数据变成了0.32999999999999996。我正在使用FMDB,我尝试了列类型REAL、DECIMAL,它们有同样的问题。如果有办法将比例设置为DECIMAL列。我试过DECIMAL(8,2),但没有用。 最佳答案 据我所知,SQLite不提供实际的十进制类型,所有类似float的数字都被转换为double。http://www.sqlite.org/datatype3.html对于小数(10,5):
我需要转换在double中执行的计算结果,但我不能使用decimalNumberByMultiplyingBy或任何其他NSDecimalNumber函数。我尝试通过以下方式获得准确的结果:doublecalc1=23.5*45.6*52.7;//->calc1=56473.32000000000698491931NSDecimalNumber*calcDN=(NSDecimalNumber*)[NSDecimalNumbernumberWithDouble:calc1];NSLog(@"calcDN=%@",[calcDNstringValue]);->calcDN=56473.32
对于简单的用途,例如跟踪65.1kg这样的体重值,使用NSDecimal/NSDecimalNumber比使用double有什么好处吗?我的理解是double(甚至浮点)在这种情况下提供了足够的精度。如果我错了,请纠正我。 最佳答案 首先,阅读JoshCaswell的链接。与金钱打交道时,这一点尤为重要。在您的情况下,这可能重要也可能不重要,具体取决于您的目标。如果您输入65.1并且您想要精确地返回65.1,那么您肯定需要使用一种能够正确舍入为十进制值的格式,例如NSDecimalNumber。如果在输入65.1时,您想要“一个在6
我尝试通过以下方式输出带有正确小数点分隔符的小数点描述:NSString*strValue=@"9.94300";NSDecimalNumber*decimalNumber=[NSDecimalNumberdecimalNumberWithString:strValue];NSLocale*locale=[NSLocalecurrentLocale];NSLog(@"%@",[localelocaleIdentifier]);NSLog(@"%@",[decimalNumberdescriptionWithLocale:locale]);输出是:de_DE9.943小数点分隔符应该是'
我想在除以100之后创建NSDecimalNumber。我正在使用以下代码:NSDecimalNumber*amountToSendNumber=[numberdecimalNumberByDividingBy:[NSDecimalNumberdecimalNumberWithString:@"100"]];如果我将2536作为25.36输入,它会给出正确的值。但是如果我提供输入2500那么输出就是25。我希望在没有任何舍入机制的情况下输出为25.00。有什么帮助吗? 最佳答案 在显示NSDecimalNumber时需要使用NSNu
我正在用Swift构建一个预算应用程序。NSDecimalNumber在一个Action之后首先添加到一个数组中(如下)。然后NSDecimalNumber被转换为TableView的CurrencyFormat,并附加到一个单独的字符串数组。如何找到第一个NSDecimalNumbers数组的总和来创建可用金额标签?varadding:[NSDecimalNumber]=[5,6,5.55,6.55,1]我试过将数字转换为NSDecimal(addingAmount),然后将其附加到上面的数组(添加):letaddingAmount=NSDecimalNumber(string:te
我们在我们的业务逻辑中发现了一个有趣的案例,它完全打破了我们的逻辑,我们不明白为什么NSDecimalNumber和Decimal的行为方式是这样的。我的案例playground如下:importFoundationletpQuantity=Decimal(string:"0.2857142857142857")!letpPrice=Decimal(string:"7.00000000000000035")!letcalced=NSDecimalNumber(decimal:pQuantity*pPrice*Decimal(integerLiteral:100))//200letdec
这个问题在这里已经有了答案:Howtostore1.66inNSDecimalNumber(1个回答)关闭5年前。我读了很多书,说NSDecimalNumber是使用货币时使用的最佳格式。但是,我仍然遇到float问题。例如。leta:NSDecimalNumber=0.07//0.07000000000000003letb:NSDecimalNumber=7.dividing(by:100)//0.06999999999999999我知道我可以使用Decimal并且b就是我所期望的:letb:Decimal=7/100//0.07我在我的应用程序中使用核心数据。所以我坚持使用NSDe
如何将NSDecimalNumber值转换为字符串?//ReturntypeisNSDecimalNumbervarprice=prod.minimumPrice//10//needaStringcell.priceLB.text=NSString(format:"%f",prod.minimumPrice)asString 最佳答案 您可以尝试其中的一些选项。它们都应该返回10。还要检查为什么需要创建NSString格式化数字并将其转换为String。"\(price)"String(describing:price)NSStri
我知道RLMObjects不能存储NSDecimalNumber。为了解决这个问题,我尝试了以下方法,但失败了:privatedynamicvar_amount:String=""publicvaramount:NSDecimalNumber{get{returnNSDecimalNumber(string:_amount)}set{_amount=newValue.stringValue}}我收到一条失败消息,指出RLMObjects无法存储NSDecimalNumbers。我的印象是非动态属性不会存储在Realm中 最佳答案 R