Skip to content

Commit

Permalink
use RyuDouble.doubleToString
Browse files Browse the repository at this point in the history
  • Loading branch information
wenshao committed Aug 1, 2018
1 parent 81befcc commit 01ac255
Show file tree
Hide file tree
Showing 3 changed files with 518 additions and 11 deletions.
38 changes: 27 additions & 11 deletions src/main/java/com/alibaba/fastjson/serializer/SerializeWriter.java
Expand Up @@ -18,6 +18,7 @@
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.util.IOUtils; import com.alibaba.fastjson.util.IOUtils;
import com.alibaba.fastjson.util.RyuDouble;


import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
Expand Down Expand Up @@ -645,32 +646,47 @@ public void writeHex(byte[] bytes) {
} }


public void writeFloat(float value, boolean checkWriteClassName) { public void writeFloat(float value, boolean checkWriteClassName) {
if (Float.isNaN(value) // if (Float.isNaN(value) //
|| Float.isInfinite(value)) { || Float.isInfinite(value)) {
writeNull(); writeNull();
} else { } else {
String floatText= Float.toString(value); String floatText= Float.toString(value);
write(floatText); write(floatText);

if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) { if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) {
write('F'); write('F');
} }
} }
} }


public void writeDouble(double doubleValue, boolean checkWriteClassName) { public void writeDouble(double value, boolean checkWriteClassName) {
if (Double.isNaN(doubleValue) // if (Double.isNaN(value)
|| Double.isInfinite(doubleValue)) { || Double.isInfinite(value)) {
writeNull(); writeNull();
} else { return;
String doubleText = Double.toString(doubleValue); }

write(doubleText);


if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) { int newcount = count + 24;
write('D'); if (newcount > buf.length) {
if (writer == null) {
expandCapacity(newcount);
} else {
String str = RyuDouble.doubleToString(value);
write(str, 0, str.length());

if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) {
write('D');
}
return;
} }
} }

int len = RyuDouble.doubleToString(value, buf, count);
count += len;

if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) {
write('D');
}
} }


public void writeEnum(Enum<?> value) { public void writeEnum(Enum<?> value) {
Expand Down

0 comments on commit 01ac255

Please sign in to comment.