如何避免在JavaScript

时间:2019-10-24 19:05:15

标签: javascript jsx zero

我尝试使用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)}

3 个答案:

答案 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 || 00