[js]function print_r(arr, level) { var print_red_text = ""; if(!level) level = 0; var level_padding = ""; for(var j=0; j<level+1; j++) level_padding += " "; if(typeof(arr) == 'object') { for(var item in arr) { var value = arr[item]; if(typeof(value) == 'object') { print_red_text += level_padding + "'" + item + "' :\n"; print_red_text += print_r(value,level+1); } else print_red_text += level_padding + "'" + item + "' => \"" + value + "\"\n"; } } else print_red_text = "===>"+arr+"<===("+typeof(arr)+")"; return print_red_text; } $(document).ready(function(){ var price_big; var format=$('.format:checked').attr('value'); var collection=$('.collection:checked').attr('value'); var box=$('.box:checked').attr('value'); var tiraj=$('#tiraj').attr('value'); var sum; var prc; var tiraj_col=[]; var tiraj_id; var box_prc; var box_choes; var items = []; var boxs = []; var t_box; $.getJSON("./json/for_col.php",{}, function(json){ items=json $.getJSON("./json/box.php",{}, function(json1){ boxs=json1 $.getJSON("./json/tiraj.php",{}, function(json2){ tiraj_col=json2; pereshet(); $(":input").change(function(){ pereshet(); }); }); }); }); function pereshet(){ format_ch(); collection_ch(); box_ch(); all_tiraj(); f_summ(); } function format_ch(){ format=$('.format:checked').attr('value'); } function collection_ch(){ collection=$('.collection:checked').attr('value'); } function box_ch(){ if(boxs[format+'|'+tiraj_id+'|'+'1']==undefined && boxs[format+'|'+tiraj_id+'|'+'2']==undefined){ $('.box').attr('disabled', true); //alert(format+'|'+tiraj_id+'|'+'1'); $('#box_text').fadeIn('slow'); //alert($('.box').attr('disabled')); } else{ $('.box').removeAttr('disabled'); $('#box_text').fadeOut('slow'); //alert($('.box').attr('disabled')); box_choes=$('.box:checked').attr('value'); if(box_choes!=0){ b=format+'|'+tiraj_id+'|'+box_choes; box_prc=boxs; //alert(format+'|'+tiraj_id+'|'+box_choes); //alert(box_prc); } else{ box_prc=0; } } } function all_tiraj(){ tiraj=$("#tiraj").attr("value"); if(tiraj<500){ alert('Тираж не может быть меньше 500'); $('#tiraj').attr('value', '500'); } for (var i in tiraj_col){ i=parseInt(i); key_p=i+1; tiraj=parseInt(tiraj); tiraj_col=parseInt(tiraj_col); tiraj_col[key_p]=parseInt(tiraj_col[key_p]); if(i==24){ if(tiraj>=tiraj_col) { tiraj_id=i; } } else { if(tiraj>=tiraj_col && tiraj<tiraj_col[key_p]) { tiraj_id=i; } } } } function f_summ(){ if(tiraj!=undefined && format!=undefined && collection!=undefined){ c=format+'|'+collection; prc=items[c]; prc=prc*100; alert('prc_'+prc); tiraj=tiraj.toFixed(0); alert('tiraj_'+prc); sum=prc*tiraj; box_p=box_prc*100; if(box_prc!=undefined && box_prc!=0){ alert('ku!'); prc=prc + box_p; sum=sum + box_p*tiraj; } alert(sum); sum=sum/100; prc=prc/100; $('#summ').html('Цена:<br> за один '+ prc + '<br>за '+ tiraj + ': ' + sum+'euro'); } } });[/js] Я совершенно точно уверен что как минимум тираж передаётся ЦЕЛЫМ числом. А возвращается с огромным кол-вом девяток после запятой=( Причём так происходит не всегда. Это что какая-то особенность js?
PHP: <? $a=0.1; $b=0.2; echo (($a+$b) == 0.3 ? 1 : 0); Какой ответ будет? =) В общем, не используйте зря флоат или округляйте.
Ну, знание причины даёт путь к устранению следствий. В любом случаи я пока не увидел(не понял?) ни того, ни другого =(
Знание проистекает из принципов хранения вещественных чисел. Читать IEEE 754 всякое прочее на эту тему. Решение очень простое - работая с вещественными числами всегда определяй точность с которой работаешь и округляй результат. Т.е. используй toFixed для результата вычислений.
Спасибо. Хотя вообще это бред, конечно. Они это править собираются? Ну, в том смысле, что такое безобразие не увеличивает удобство работы=(