gpt4 book ai didi

javascript - 将整数保存为 float

转载 作者:行者123 更新时间:2023-11-28 13:30:56 25 4
gpt4 key购买 nike

function prec(numb){
var numb_string = numb.toString().split('.')

return numb_string[(numb_string.length - 1)].length
}
function randy(minimum, maximum) {
var most_accurate = Math.max ( prec(minimum), prec(maximum) );

return ( ( Math.random() * ( maximum - minimum ) + minimum ).toFixed( most_accurate ) );
}

// returns random numbers between these points. 1 decimal place of precision:
console.log( randy(2.4,4.4) );

// returns random numbers between these points. 3 decimal places of precision:
console.log( randy(2.443,4.445) );

// returns random numbers between these points. Want 3 decimal places of precision. However, get 0:
console.log( randy(2.000,4.000) );

// Why do I get 0 decimal places? Because floats are rounded into integers automatically:

console.log( 4.0 ); // want 4.0 to be logged. Instead I get '4'

您无需阅读这些函数的工作原理。只是控制台日志。

基本上,我需要以一定的精度返回两点之间的随机数。精度自动从传递给 randy 的最精确 float 中得出。功能。

当数字范围为 3.5 时,此方法可以正常工作。 3.734.4322 800.3233但不是2.0 , 3.04.0000 , 5.0000

然后数字似乎会自动保存为整数:

console.log( 2.0 ) //=> 2

我想扩展 Number 原型(prototype),以便 2.0另存为2.0这样这个函数就可以找到精度:

function prec(numb){
var numb_string = numb.toString().split('.')

return numb_string[(numb_string.length - 1)].length
}

目前认为 3.000000000精度为 0 位小数,因为如果 3E8传入为 numb参数,读作3 。我希望它读作 3.000000000

虽然我可以做到这一点randy(2.toFixed(3),3.toFixed(3))它变得不可读,并且不可否认的是,对于较小的精度来说这样做会更好:randy(2.000,3.000)

这可能吗?

Fiddle

最佳答案

有一个聪明的方法可以解决这个问题,就是定义一个类来帮助您管理数值和小数值。

function HappyNumber()
{
this.value = (typeof(arguments[0]) == "number") ? arguments[0] : 0;
this.decimal = (typeof(arguments[1]) == "number") ? arguments[1] : 0;
this.Val = function()
{
return parseFloat(this.value.toFixed(this.decimal));
}
this.toString = function()
{
return (this.value.toFixed(this.decimal)).toString();
}
}

该类如何工作

现在要做的第一件事就是创建一个像这样的新号码

var Num = HappyNumber(4.123545,3); 
// first argument is the value
// and second one is decimal

要获取变量的值,您应该像这样使用函数Val

console.log(Num.Val()); // this one prints 4.123 on your console

最重要的部分是这个,当您使用toString函数时,它会返回您的号码

Num.toString() // it returns "4.123"
(new HappyNumber(4,4)).toString(); // it returns "4.0000"

现在,您将参数作为 (HappyNumber) 传递,并在函数内部使用 toString,它会返回您需要的正确值,并且它适用于 1.00 2.000 4.00000

关于javascript - 将整数保存为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24977499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com