アプリ版:「スタンプのみでお礼する」機能のリリースについて

初歩的な質問かもしれませんが2つほどお願いします。

1.jsファイルの文字コード
htmlファイルではheadにシフトJIS指定で記述したのですがjsファイルでは何も指定せずに(指定できるのでしょうか?)
保存したらjsファイルの読み込み時に文字化けしてしまいました。
どちらもWindowsのメモ帳で作成保存したのですがjsファイルの文字コードはどうなるのでしょうか?
htmlのほうをEUC指定すると文字化けはおきないのですがフォントがずれるのであまり使いたくありません。

2.小数変換
小数第何位を四捨五入と指定できる関数というのはあるのでしょうか?
Math.floorやMath.ceilでは整数値になってしまいます。
10^nで割ってから計算し直さないといけないのでしょうか?

A 回答 (8件)

昨晩は酒を飲みながら訳の判らない回答をしていたようです。


まあ、次のような関数を考えていたということです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<title>Round</title>
<meta http-equiv="Content-script-Type" content="type">
<script type="text/javascript">
function rounds(m, t) {
  return sgn(m)*Math.floor(Math.abs(m)*Math.pow(10,t-1)+0.5)/Math.pow(10,t-1);
}

function sgn(m) {
  return (m < 0) ? -1 : 1;
}
</script>
<body>
<script>
<!--
document.write (rounds(-1.45, 2), "</br>");
//-->
</script>
</body>
</html>
    • good
    • 0
この回答へのお礼

この時期はお酒が入るのは仕方ありませんね(笑
いろいろなプログラムを載せていただき勉強になります。
ありがとうございます。

お礼日時:2007/12/28 10:51

まあ、それよりも、バグを心配しています。


つまり、正と負の値の問題です。
-1.124 の場合、1.124 にして四捨五入。
その後、負なら-1を掛けないと・・・。
今、自宅で酒飲みながらで試せません。
しかし、通常は、四捨五入関数は作りますよね。
Math.sgn なんてありましたかね・・・。
    • good
    • 0

>No.4の方



無粋なツッコミなので気に障ったらスルーしていただきたいのですが、
指数を指定するのであれば
function rounds(m, t) {
 return Math.round(m*Math.pow(10,t-1))/Math.pow(10,t-1);
}
とした方が「小数点第何位で四捨五入」というのが分かりやすいかなぁと。
まぁそういう意味では引数がマイナスで小数点以下、正数の場合は上何桁目で四捨五入としたほうが可読性は高まりますけどこの辺は質問者様に努力していただくという方向でどうかよろしく。
ヒントとしてはtを正負逆にすることです。

それでは皆様よい年末を。
    • good
    • 0
この回答へのお礼

プログラムまでわざわざありがとうございます!
今回は負のエラーなどを気にするプログラムではないので
この方法で試してみたいと思います。

お礼日時:2007/12/28 10:48

var v=0;


は、ゴミ!
    • good
    • 0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">


<html>
<title>Round</title>
<meta http-equiv="Content-script-Type" content="type">
<script type="text/javascript">
var v=0;

function rounds(m, t) {
  return Math.round(m*Math.pow(10,t))/Math.pow(10,t);
}
</script>
<body>
<script>
<!--
  document.write (rounds(1.154, 2), "</br>");
//-->
</script>
</body>
</html>

document.write (rounds(1.154, 0), "</br>");---->1
document.write (rounds(1.154, 1), "</br>");---->1.2
document.write (rounds(1.154, 2), "</br>");---->1.15

ここまではテストしました。
    • good
    • 0

日本語おかしかったので自己ツッコミ


>四捨五入は組み込まれていません。
小数点以下の四捨五入は(snip)

ついでにソースでも。

var nn = 1.2345
nn_tmp = nn * 100;
nn = Math.round(nn_tmp) / 100;
// nn -> 1.23
    • good
    • 0

>htmlのほうをEUC指定すると文字化けはおきないのですがフォントがずれるのであまり使いたくありません。


文字コードとフォントに関係はありません。
フォントが変わるのがイヤなのであればcssなどで明示的に指定すればよいです。

文字化けに関しては原因は別のところにある気がします。
<meta>やjsの読み込み部に間違いがないか確認するとよいかもしれません。


>10^nで割ってから計算し直さないといけないのでしょうか?
そのとおり。四捨五入は組み込まれていません。
ロジックは自分で組むほかありません。
たかだか3ロジックくらいなのでそんなに手間ではないですよ。
    • good
    • 0

>jsファイルの文字コード


win・メモ帳は、文字コードが設定出来ません。
例えば、秀丸などのエディタでは、保存する際に
エンコードの種類、改行コードの指定まで出来ます。
秀丸はシェアウェアですが、フリーでもいろいろありますので
検索してみてはいかがでしょうか?

>2.小数変換.
Math.round ← これだと四捨五入してくれます

参考URL:http://www.tohoho-web.com/js/math.htm#just
    • good
    • 0
この回答へのお礼

やはりメモ帳ではムリですか~
Windowsのメモ帳は自動でシフトJISでのみ保存されると聞いたのですが
jsファイルでは自動でEUCになってしまうということでしょうか?

お礼日時:2007/12/28 10:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!