如何在打字稿字符串插值中格式化数字?
How to format a number in a typescript string interpolation?
我有一个 angular 管道,如果距离大于给定数量,它应该进行一些基本转换以显示以千米为单位的距离。
export class DistancePipe implements PipeTransform {
transform(value: number, ...args: unknown[]): unknown {
if(value>1000){
return `${(value/1000):d2} km`;//<--- This won't compile
}else{
return `${value} m`;
}
}
}
但我很难显示以公里为单位的距离。
目标是具有以下行为:
1141 -> 1.1
501 -> 501
1011 -> 1
2091 -> 2.1
1990 -> 2
999-> 999
我尝试使用 ToFixed
,但它会强制显示 1.0
的 0
,这对我来说是不可接受的。这似乎很疯狂,我不能做像格式这样简单的事情
到 Number
的额外转换会删除 .0
。顺便说一句,1151/1000 恕我直言(四舍五入)是 1.2,而不是 1.1。
const formatNr = nr => nr > 1000 ? +((nr/1000).toFixed(1)) : nr;
// ∟ here
const numbers = [1151, 501, 1011, 2091, 1990, 999];
console.log(numbers.map(nr => `${nr} -> ${formatNr(nr)}`));
我有一个 angular 管道,如果距离大于给定数量,它应该进行一些基本转换以显示以千米为单位的距离。
export class DistancePipe implements PipeTransform {
transform(value: number, ...args: unknown[]): unknown {
if(value>1000){
return `${(value/1000):d2} km`;//<--- This won't compile
}else{
return `${value} m`;
}
}
}
但我很难显示以公里为单位的距离。
目标是具有以下行为:
1141 -> 1.1
501 -> 501
1011 -> 1
2091 -> 2.1
1990 -> 2
999-> 999
我尝试使用 ToFixed
,但它会强制显示 1.0
的 0
,这对我来说是不可接受的。这似乎很疯狂,我不能做像格式这样简单的事情
到 Number
的额外转换会删除 .0
。顺便说一句,1151/1000 恕我直言(四舍五入)是 1.2,而不是 1.1。
const formatNr = nr => nr > 1000 ? +((nr/1000).toFixed(1)) : nr;
// ∟ here
const numbers = [1151, 501, 1011, 2091, 1990, 999];
console.log(numbers.map(nr => `${nr} -> ${formatNr(nr)}`));