将integer保存为float
Save integer as float
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
函数的最精确浮点数派生。
当数字范围为3.5
3.7
或34.4322
800.3233
但不包括2.0
, 3.0
或4.0000
, 5.0000
则该数字将自动保存为整数:
console.log( 2.0 ) //=> 2
我想扩展Number原型,使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)
。
这可能吗?
小提琴
有一个聪明的方法来解决这个问题,就是定义一个类来帮助您管理数字值和十进制值。
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
这是你想要的。(警告:这可能不是一个好主意。)
Number.prototype.toString = function () { return this.toFixed(1); }
相关文章:
- 如何将getJson的响应保存在全局变量中
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- HTML5在画布中加载较小的图像并保存实际大小的图像
- 是否可以在浏览器中使用纯JavaScript保存音频流
- 如何将多个画布保存为一个图像
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- 保存数组javascript
- 保存串行端口列表与流星
- 将JavaScript变量保存到Rails模型
- Java脚本将URL转换为已保存的URL时出错
- 如何自动保存动态生成的HTML SVG元素
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 将JQuery Handontable保存到服务器上的excel文件中
- NodeJS expressJS使用multer和passport将文件上传并保存到MongoDB
- 将数据保存到数据库(ajax/php)后,使文本字段变灰/禁用
- 使用Javascript保存float
- 将integer保存为float