在 Javascript 中制作一个千 (k) 转换器函数而不四舍五入并且不从末尾删除 .0
Making a thousands (k) convertor function in Javascript without rounding and NOT remove .0 from end
我正在尝试在 JS 中制作一个简单的 1000 到 k 转换器函数,它将接受一个数字并将其转换为 thousands/k。我无法让 .toFixed(1) 正常工作。
我不希望它四舍五入,我希望它显示一位小数,除非小数是 0。我希望生成的 returns 的几个示例是:
1100 -> 1.1K
1199 -> 1.1K
9999 -> 9.9K
10900 -> 10.9K
10999 -> 10.9K
JS
function kConvertor(num) {
return num <= 999 ? num : (num/1000).toFixed(1) + 'k'
}
这个 returns 10.0k 达到了我不想要的两种情况 (9.9k)。
我在这里做错了什么?
我尝试在末尾添加 parseInt() 和 .replace('.0', '') 但没有成功。
function kConvertor(num) {
return num <= 999 ? num : parseInt((num/1000)).toFixed(1).replace('.0', '') + 'k'
}
这只是returns9k
这是通过使用数学运算符正确向下舍入到最接近的 K 的十分之一,然后使用 .toFixed(1)
执行必要的字符串操作来从结果中去除 .0
来实现的:
function kConverter(num) {
return num <= 999 ? num : (0.1 * Math.floor(num / 100)).toFixed(1).replace('.0','') + 'k'
}
注意:让函数 return 为 <= 999 的数字或字符串不是一个好习惯。意外的结果类型是绝大多数“WAT?!”的原因。来自 famous video 的瞬间。始终确保您的 return 类型一致:
function kConverter(num) {
if (num < 1000) {
return number.toFixed(0); // assuming an integer
} else {
const s = (0.1 * Math.floor(num / 100)).toFixed(1);
return s.replace('.0', '') + 'k';
}
}
我正在尝试在 JS 中制作一个简单的 1000 到 k 转换器函数,它将接受一个数字并将其转换为 thousands/k。我无法让 .toFixed(1) 正常工作。 我不希望它四舍五入,我希望它显示一位小数,除非小数是 0。我希望生成的 returns 的几个示例是:
1100 -> 1.1K
1199 -> 1.1K
9999 -> 9.9K
10900 -> 10.9K
10999 -> 10.9K
JS
function kConvertor(num) {
return num <= 999 ? num : (num/1000).toFixed(1) + 'k'
}
这个 returns 10.0k 达到了我不想要的两种情况 (9.9k)。 我在这里做错了什么?
我尝试在末尾添加 parseInt() 和 .replace('.0', '') 但没有成功。
function kConvertor(num) {
return num <= 999 ? num : parseInt((num/1000)).toFixed(1).replace('.0', '') + 'k'
}
这只是returns9k
这是通过使用数学运算符正确向下舍入到最接近的 K 的十分之一,然后使用 .toFixed(1)
执行必要的字符串操作来从结果中去除 .0
来实现的:
function kConverter(num) {
return num <= 999 ? num : (0.1 * Math.floor(num / 100)).toFixed(1).replace('.0','') + 'k'
}
注意:让函数 return 为 <= 999 的数字或字符串不是一个好习惯。意外的结果类型是绝大多数“WAT?!”的原因。来自 famous video 的瞬间。始终确保您的 return 类型一致:
function kConverter(num) {
if (num < 1000) {
return number.toFixed(0); // assuming an integer
} else {
const s = (0.1 * Math.floor(num / 100)).toFixed(1);
return s.replace('.0', '') + 'k';
}
}