Commit f5336336 authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander.Trofimov

Bug 20026 - Не учитывается пользовательский формат ячейки при открытии файла

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@52386 954022d7-b5bf-4e40-9824-e11837661b57
parent d3e46cb6
...@@ -58,14 +58,19 @@ function getNumberParts(x) ...@@ -58,14 +58,19 @@ function getNumberParts(x)
sig = SignType.Negative; sig = SignType.Negative;
x = Math.abs(x); x = Math.abs(x);
} }
var exp = Math.floor( Math.log(x) * Math.LOG10E ) - gc_nMaxDigCount + 1; var exp = - gc_nMaxDigCount;
//хотелось бы поставить здесь floor, чтобы не округлялось число 0.9999999999999999, но обнаружились проблемы с числом 0.999999999999999 var man = 0;
//после умножения оно превращается в 999999999999998.9 if(SignType.Null != sig)
var man = Math.round(x / Math.pow(10, exp));
if(man >= gc_nMaxMantissa)
{ {
exp++; exp = Math.floor( Math.log(x) * Math.LOG10E ) - gc_nMaxDigCount + 1;
man/=10; //хотелось бы поставить здесь floor, чтобы не округлялось число 0.9999999999999999, но обнаружились проблемы с числом 0.999999999999999
//после умножения оно превращается в 999999999999998.9
man = Math.round(x / Math.pow(10, exp));
if(man >= gc_nMaxMantissa)
{
exp++;
man/=10;
}
} }
return {mantissa: man, exponent: exp, sign: sig};//для 0,123 exponent == - gc_nMaxDigCount return {mantissa: man, exponent: exp, sign: sig};//для 0,123 exponent == - gc_nMaxDigCount
} }
...@@ -1059,6 +1064,8 @@ NumFormat.prototype = ...@@ -1059,6 +1064,8 @@ NumFormat.prototype =
{ {
var sNumber = number + ""; var sNumber = number + "";
var nNumberLen = sNumber.length; var nNumberLen = sNumber.length;
//для бага Bug 14325 - В загруженной таблице число с 30 знаками после разделителя отображается неправильно.
//например число "1.23456789123456e+23" и формат "0.000000000000000000000000000000"
if(exponent > nNumberLen) if(exponent > nNumberLen)
{ {
for(var i = 0; i < exponent - nNumberLen; ++i) for(var i = 0; i < exponent - nNumberLen; ++i)
...@@ -1089,14 +1096,22 @@ NumFormat.prototype = ...@@ -1089,14 +1096,22 @@ NumFormat.prototype =
} }
} }
//просто заполняем текстом //просто заполняем текстом
var bFirstNotNull = false;
for(var i = 0, length = sNumber.length; i < length; ++i) for(var i = 0, length = sNumber.length; i < length; ++i)
{ {
var sCurNumber = sNumber[i]; var sCurNumber = sNumber[i];
var numFormat = numFormat_Text;
var item = format.shift(); var item = format.shift();
if(true == bIsNUll && null != item && numFormat_DigitNoDisp == item.type && FormatStates.Scientific != nReadState) if(true == bIsNUll && null != item && FormatStates.Scientific != nReadState)
sCurNumber = ""; {
aRes.push(new FormatObj(numFormat_Text, sCurNumber)); if(numFormat_DigitNoDisp == item.type)
sCurNumber = "";
else if(numFormat_DigitSpace == item.type)
{
numFormat = numFormat_DigitSpace;
sCurNumber = null;
}
}
aRes.push(new FormatObj(numFormat, sCurNumber));
} }
//Вставляем разделители //Вставляем разделители
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment