Swift中数字中的小数位数

Posted

技术标签:

【中文标题】Swift中数字中的小数位数【英文标题】:Number of decimals in a number in Swift 【发布时间】:2020-05-17 17:59:34 【问题描述】:

在下面的代码中,我通过添加不同的值来声明一个变量,具体取决于某些切换是真还是假。当我尝试打印这个变量时,它返回一个数字和一个小数点,但后面跟着很多 0。有没有办法在数字后面不显示零?

免责声明我正在使用 Swift Playground

var rvalues = [6.5, 5.9, 5.3, 4.8, 4.2, 3.5, 3.1, 2.9, 1.75, 1.5, 1.2, 1.05, 0.92, 0.82, 0.75, 0.7]


var r0 : Double 
        model.rvalues[(model.wearingMaskToggle ? 1:0) + (model.washingHandsToggle ? 2:0) + (model.quarantineToggle ? 8:0) + (model.coverMouthToggle ? 4:0)]
    

【问题讨论】:

【参考方案1】:

首先,如果您对这些 0 的来源感到好奇,请阅读is floating point math broken? - 您的数组中的许多值都不能精确地表示为双精度数。

要解决您的显示问题,请使用NumberFormatter 并适当设置minimumFractionDigitsmaximumFractionDigits

或者,使用Decimal 来表示您的价值观。

【讨论】:

使用小数不起作用我收到错误“无法将'Double'类型的返回表达式转换为'Decimal'类型” 当然这适用于 Playgrounds。当您将 rvalue 中的表示更改为小数时,您必须更改 r0 并且不会自动转换。 我如何改变表示,它只是右值:十进制 不,[Decimal]。你还必须确保你没有用精确的值初始化你的数组。

以上是关于Swift中数字中的小数位数的主要内容,如果未能解决你的问题,请参考以下文章

怎么在vb中输出固定小数位数的数字?

JS限制数字中的小数位数[重复]

java中如何控制输出数字位数

控制R中打印输出中的小数位数

无法理解 DBMS 中数值数据类型的精度和小数位数

vb.net怎么设置数字保留小数点位数