我在PHP中找到了浮点问题的一些解决方法:
php.ini设置 precision = 14
342349.23 - 341765.07 = 584.15999999992 // floating point problem
Run Code Online (Sandbox Code Playgroud)
php.ini设置,让我们说吧 precision = 8
342349.23 - 341765.07 = 584.16 // voila!
Run Code Online (Sandbox Code Playgroud)
演示:http://codepad.org/r7o086sS
这有多糟糕?
1.如果我只需要精确的2位数计算(金钱),我可以依赖这个解决方案吗?
如果没有,你可以在这个解决方案失败时给我一个明确的例子吗?
编辑:3.哪个php.ini.precision值最适合两位数,钱计算
@Baba答案是好的,但他用precision=20,precision=6在他的测试...所以还是我不知道是不是要去工作与否.
请考虑以下事项:
让我们说precision = 8,我唯一要做的就是加法+和减法-
A + B = C
A - B = C
问题1:对于0到999999.99之间的数字,精确解决方法是否会失败,其中A和B是带小数位的数字?如果是这样,请给我一个例子.
简单的测试可以完成这项工作:
// if it fails what if I use 9,10,11 ???
// …Run Code Online (Sandbox Code Playgroud) 我想{baseurl}在TinyMCE编辑器中将所有关键字替换为正确的URL.我怎样才能做到这一点?
例如,如果用户将在编辑器中添加HTML,<img src="{baseurl}/image.jpg" />我想在TinyMCE编辑器中看到这个图像 - 所以这将被替换为<img src="http://mydomain.com
/image.jpg" />
有任何想法吗?
示例代码:
<?php
$json = "['foo', 'bar']";
var_dump( json_decode($json) );
Run Code Online (Sandbox Code Playgroud)
它适用于PHP 5.5.3,但它不适用于较低的PHP版本
它可以在我的机器上使用PHP 5.5.3,但在其他地方都失败了.
我知道这是不正确的JSON,但我的webservice给了我带'符号的JSON"
['foo', "bar", {'test': "crazy \"markup\""}]
Run Code Online (Sandbox Code Playgroud)
如何在PHP 5.3中使用撇号解析JSON数据?显然,我想解析的原始JSON更复杂.
(我无法在生产服务器上升级我的PHP,也无法从webservice获取正确的JSON)
我想在所有类元素上执行一些函数.我怎样才能做到这一点?
我想要的是:
// i want to fire my function on all class elements
$('.myClass').go(function(){
// my function using "this" object
});
Run Code Online (Sandbox Code Playgroud)
我知道这是一个愚蠢的问题,我曾经在一段时间内研究预测,现在我不记得jquery的正常功能
我的SQL:
CREATE PROCEDURE INV_MIN_PURCHASE_PRICE()
BEGIN
DECLARE done INT;
DECLARE current_inventory_ID INT;
DECLARE cur1 CURSOR FOR SELECT inventory_ID FROM _inventory;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SET done = 0;
OPEN cur1;
REPEAT
FETCH cur1 INTO current_inventory_ID;
UPDATE _debug SET rows=rows+1;
UNTIL done
END REPEAT;
CLOSE cur1;
END;
Run Code Online (Sandbox Code Playgroud)
当我调用此过程时,MySQL只获取一行(_debug rows增加1).为什么??这是一个错误吗?
我处于这种非常不幸的境地:
我的网站用于与支付网关交换数据,但随着TLSv1.0被删除,我不再使用php的cURL库甚至file_get_contents()(或wget/lynx/curl via shell)
是否有任何解决方法,如何在不使用内置库的情况下连接TLSv1.1 +安全服务器的任何选项?
我知道PHP中存在一些类,如phpseclib,这是SSH客户端,非常适合不能使用SSH2模块的人
PHP存在类似的东西吗?有什么方法可以连接到我的网关吗?
到目前为止,我最好的想法是通过其他服务器连接到网关(使用更新的软件)
情况如下:
$(document).ready(function(){
// this will return different result
alert($('#foo').width());
// than this !!!
setTimeout(function(){
alert($('#foo').width());
}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
CSS(<head>部分):
<link href='http://fonts.googleapis.com/css?family=Headland+One' rel='stylesheet' type='text/css'>
... and
#foo {
font-family: 'Headland One', serif;
}
Run Code Online (Sandbox Code Playgroud)
当我使用标准字体(例如Arial)时一切都很好(.width()在两种情况下返回相同的结果)
是否有任何解决方法不同于setTimeout获得适当的.width()值并保留自定义字体?
假设我们需要一些锁定脚本,我们确保两个脚本永远不会同时运行:
if(file_get_contents('test.txt')) { // this is always empty...
die("Another script is running in background!");
}
file_put_contents('test.txt', 'busy!');
sleep(10); // heavy work here
file_put_contents('test.txt', '');
Run Code Online (Sandbox Code Playgroud)
它仍然允许我同时运行两个脚本.看起来像file_get_contents()缓存的结果?
怎么解决?我想使用文件,而不是DB.
编辑:我已经设法使用flock()设置了锁定脚本(感谢Levi Morrison)
无论如何,我仍然很好奇为什么会file_get_contents出现如此意外的行为?
请考虑以下 crontab (root):
SHELL=/bin/bash
...
...
0 */3 * * * /var/maintenance/raid.sh
Run Code Online (Sandbox Code Playgroud)
和 bash 脚本/var/maintenance/raid.sh:
#!/bin/bash
echo -n "Checking /dev/md0... "
if ! [ $(mdadm --detail /dev/md0 | grep -c "active sync") -eq 2 ]; then
mdadm --detail /dev/md0 | mail -s "Raid problem /dev/md0" "my@email.com";
echo "ERROR"
else
echo "ALL OK"
fi;
#-------------------------------------------------------
echo -n "Checking /dev/md1... "
...
Run Code Online (Sandbox Code Playgroud)
这就是当...
...从 shell 提示符 (bash) 执行:
带有mdadm --detail /dev/md0输出的邮件被发送到我的电子邮件(正确的行为)
...由 cron 执行:
空白邮件发送到我的邮箱(主题在那里,但没有消息)
为什么会有这种差异以及如何解决?
考虑以下查询:
SELECT *
FROM table1
LEFT JOIN table2 ON
table2.some_primary_key = table1.some_primary_key
LEFT JOIN table3 ON
table3.some_primary_key = table1.some_primary_key OR -- this is the issue
table3.column_with_index = table2.column_with_index
Run Code Online (Sandbox Code Playgroud)
虽然我检查EXPLAIN它显示我索引没有用于table3连接(但索引显示在"possible_keys").输入:'ALL'.根据手册:
连接类型"ALL":对前面表格中的每个行组合进行全表扫描.
查询非常慢.
但是,当我删除其中一个条件时,它将是:
LEFT JOIN table3 ON
table3.some_primary_key = table1.some_primary_key
Run Code Online (Sandbox Code Playgroud)
要么
LEFT JOIN table3 ON
table3.column_with_index = table2.column_with_index
Run Code Online (Sandbox Code Playgroud)
Mysql正在使用索引.在EXPLAIN结果索引在'键的列中所示,类型是"REF".查询速度非常快.
如何OR在join语句中使用mysql时使用我的索引?
我试过LEFT JOIN table3 FORCE INDEX(PRIMARY, ind_column)但没有成功.
只是想知道什么是更好的:
即时创建大拇指:
用户上传后创建拇指:
有什么建议?我应该真的担心CPU吗?假设我有数千张图像,每张图片都需要5种不同尺寸的拇指.未来可能会有更多尺寸.
可能重复:
Jquery:选择内的选择
考虑以下代码:
var $el = $('<div class="test"><div>Foor</div></div><div class="test"><div>Bar</div></div><div class="other">Leave it!</div>');
// won't work
$el.find('div.test').css('color','red');
$('body').append($el);
Run Code Online (Sandbox Code Playgroud)
的jsfiddle:
如何<div class="test">使用jQuery 访问元素?
请注意我想.test在文档中使用元素之前访问它们.
我知道我可以为div创建包装器,但我真的想避免它.