如何强制PaintCode在将数字转换为字符串时不舍入数字?

本文关键字:数字 字符串 不舍 舍入 转换 何强制 PaintCode | 更新日期: 2023-09-27 18:09:05

简单的问题,但我似乎找不到答案。例如,如果我试图显示电池电压,几个小数点的差异可能非常重要。如果我有这个:

stringFromNumber(voltage) + 'V'

,电压为12.4,则输出12V。这不好。我可以很容易地通过编辑生成的StyleKit来修复这个问题,但是我每次进行更改时都必须这样做,这将是一个真正的痛苦。有人有解决办法吗?

我正在处理c#输出,但是c#和Objective-C都存在问题。

相关代码:

在PaintCode中,我有stringFromNumber(voltage) + 'V'的电压字符串表达式生成:

private void DrawGuage(float voltage) {  
    ...  
    var voltageString = new NSString(Math.Round(voltage).ToString()) + "V";
    ...

我想要PaintCode生成相同的,但没有Math.round

如何强制PaintCode在将数字转换为字符串时不舍入数字?

我找到了一个方法。这有点乱,但它工作。

stringFromNumber(floor(voltage)) + (
        frac(voltage) != 0 ? '.'+stringFromNumber(frac(voltage)*10) : ''
) + 'V'

同时,我联系了PaintCode的支持人员,他们说他们会考虑在未来的版本中添加一个更好的方法来做到这一点,但有一个类似于我的临时修复:

stringFromNumber(round(number)) + "." + stringFromNumber(round(number * 100 % 100))

上面提到的PaintCode答案不是100%。如果你有一个值x.5,它将被四舍五入到x+1,然后得到附加的0.5,所以你将得到1.5,而不是0.5,你将得到11.7。因此,你必须减去1的十进制数是0.5或更大。

所以我玩了一些数学函数和PaintCode。我用了一个表达式用来表示布尔值如果数等于或大于。5,那么它会减去1个支配数。这是我在PaintCode中用作表达式值的函数。

(round(number * 100 % 100) < 50)?(stringFromNumber(round(number)) + "." + stringFromNumber(round(number * 100 % 100))):(stringFromNumber(round(number)-1) + "." + stringFromNumber(round(number * 100 % 100)))