小编Mil*_*osz的帖子

JavaScript中有一种可靠的方法来获取任意数字的小数位数吗?

重要的是要注意我不是在寻找舍入函数.我正在寻找一个函数,它返回任意数字的简化十进制表示中的小数位数.也就是说,我们有以下内容:

decimalPlaces(5555.0);     //=> 0
decimalPlaces(5555);       //=> 0
decimalPlaces(555.5);      //=> 1
decimalPlaces(555.50);     //=> 1
decimalPlaces(0.0000005);  //=> 7
decimalPlaces(5e-7);       //=> 7
decimalPlaces(0.00000055); //=> 8
decimalPlaces(5.5e-7);     //=> 8
Run Code Online (Sandbox Code Playgroud)

我的第一直觉是使用字符串表示:拆分'.',然后打开'e-',并进行数学计算,如此(示例是详细的):

function decimalPlaces(number) {
  var parts = number.toString().split('.', 2),
    integerPart = parts[0],
    decimalPart = parts[1],
    exponentPart;

  if (integerPart.charAt(0) === '-') {
    integerPart = integerPart.substring(1);
  }

  if (decimalPart !== undefined) {
    parts = decimalPart.split('e-', 2);
    decimalPart = parts[0];
  }
  else {
    parts = integerPart.split('e-', 2);
    integerPart = parts[0];
  }
  exponentPart = parts[1]; …
Run Code Online (Sandbox Code Playgroud)

javascript floating-point precision decimal fractions

30
推荐指数
4
解决办法
2万
查看次数

当尝试更改它时,有没有办法让"Object.frozen"对象抛出警告?

我使用Object.freeze作为防止自己违反自己规则的手段.当我试图做出错误的任务时,我希望Object.freeze能和我说话.但是,Object.freeze只是让分配无声地失败!例如,如果我这样做

/*
 * Frozen singleton object "foo".
 */
var foo = (function() {
  var me = {};

  me.bar = 1;

  if (Object.freeze) {
    Object.freeze(me);
  }

  return me;
})();

foo.bar = 2;
console.log(foo.bar);
Run Code Online (Sandbox Code Playgroud)

控制台将记录"1",但我不知道我做了一个错误的任务.这当然会导致我的代码中出现危险的意外行为,当冻结对象的整个点是为了避免意外.事实上,我更有可能通过不冻结对象,让错误的分配发生,以及稍后由于错误的值导致我的代码失败而得到详细的错误输出.

我想知道JavaScript是否在任何浏览器中都有任何隐藏的"不可变对象警告"编译指示,以便我可以知道何时尝试改变"Object.frozen"对象.

javascript console warnings object

16
推荐指数
1
解决办法
2679
查看次数

psql 可以连接到 unix 域套接字,但具有相同参数的 py-postgresql 得到“权限被拒绝”

问题描述:

我的系统用户是milosz,它映射到project_great中的PostgreSQL 用户pg_ident.conf。我正在使用对等身份验证通过 unix 域套接字连接到 PostgreSQL 数据库。此连接方法在使用 时有效,但在使用 Python 脚本中的相同参数psql时则失败。py-postgresql

在这里,我使用以下命令成功连接到数据库psql

$ psql -U project_great \
>      -d project_great \
>      -h /var/run/postgresql
psql (9.3.4)
Type "help" for help.

project_great=> 
Run Code Online (Sandbox Code Playgroud)

这是database_test.py

#!/usr/bin/env python3

import postgresql

params = {
    'user':     'project_great',
    'database': 'project_great',
    'unix':     '/var/run/postgresql',
}

connection = postgresql.open(**params)
Run Code Online (Sandbox Code Playgroud)

在这里,我尝试通过运行连接到数据库./database_test.py

$ ./database_test.py 
Traceback (most recent call last):
  File "./database_test.py", line 11, in <module>
    sys.exit(main(sys.argv))
  File "./database_test.py", …
Run Code Online (Sandbox Code Playgroud)

postgresql unix-socket python-3.x py-postgresql

8
推荐指数
1
解决办法
2万
查看次数