我尝试使用toString()
和按位运算符|
,但是我想使用精度和字符串输出。如@trincot所述,它是由例如-0.45将导致-0。我在这里有代码。
typeof predictedHours //number e.g. -0.45
precision = 0
value={predictedHours.toFixed(precision)}
typeof value //string e.g. "-0"
问题-此行中是否有一个衬纸将-0转换为0-value={predictedHours.toFixed(precision)}
?
答案 0 :(得分:2)
我不知道有什么特别干净的方法,但是总有:
<template>
<GridLayout
ref="bottomPanel"
class="bottomPanel"
verticalAlignment="bottom"
rows="10 ,* ,10"
columns="1 ,* ,5"
>
<Label
row=1
col=1
verticalAlignment="center"
:text="statusInfo"
class="StatusInfo"
v-if="statusInfo"
/>
<ScrollView
row=1
col=1
>
<StackLayout padding=5>
<GridLayout
v-for="( item , index ) in this.$store.state.listToShow.data"
:key="index"
class="itemBox"
columns="65,*,35,33"
rows="*"
>
<Image
col=0
row=0
class="itemAvatar"
stretch="aspectFill"
/>
<StackLayout
col=0
row=0
class="itemIconLabelBox"
verticalAlignment="center"
@tap="interactiveBoxAction( item )"
@touch="onTouch"
>
<Label
:class="'itemIcon ' + item.iconFont"
:text="String.fromCharCode( '0x' + item.icon )"
textWrap="true"
/>
</StackLayout>
<Label
row=0
col=1
class="itemTitle"
:text="item.name"
@tap="interactiveBoxAction( item )"
@touch="onTouch"
textWrap="true"
/>
</GridLayout>
</StackLayout>
</ScrollView>
</GridLayout>
</template>
答案 1 :(得分:0)
我认为@trincot的建议更好,这样可以避免将-0.48.toFixed(2)
之类的小数转换为正数。花了我一段时间来了解正则表达式。不过请注意以下几点:由于运算符的优先级,当用括号括起来时,负数在toFixed中保持为负。这里有一些例子:
-0.001.toFixed(2).replace(/^-0$/, "0")
//0 '0'
console.log((-0.48).toFixed(0).replace(/^-0$/, '0')); Correct
//-0 '0'
console.log((-0.48).toFixed(2).replace(/^-0$/, '0')); Correct
//-0.48 '-0.48'
console.log(-0.48.toFixed(0).replace(/^-0$/, '0'));
//0 '0'
console.log(-0.48.toFixed(2).replace(/^-0$/, '0'));
//-0.48 '-0.48'
也在这里查看示例-toFixed()
答案 2 :(得分:0)
您还可以执行value = +predictedHours.toFixed(precision) || 0
,因为-0 || 0
是0