喫茶XRAYトップページ

[スレッド全体
]

[10206] 四捨五入について返信 削除
2016/7/21 (木) 18:32:16 Mr.XRAY
[四捨五入について]
https://forums.embarcadero.com/thread.jspa?threadID=227533&tstart=0

ホント ? やってみました.以下がテストコードです.
この程度のコードは提示した方がいいですね.
できれば,インデント付きで (笑)

動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro
                              + Delphi XE5(UP2) Por 32bit
                              + Delphi XE5(UP2) Por 64bit

結論
貴方の Delphi XE5 は壊れている

procedure TForm1.Button1Click(Sender: TObject);
var
  LValue : Double;
begin
  LValue := RoundAct(565.5);
  Memo1.Lines.Add(FloatToStr(LValue));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  LValue : Double;
begin
  LValue := RoundAct(565.50001);
  Memo1.Lines.Add(FloatToStr(LValue));
end;

//  質問者が提示したコードのコピペ

function TForm1.RoundAct(pATAI: Double): Integer;
begin
if pATAI >= 0 then begin
Result := Trunc(pATAI + 0.5);
end else begin
Result := Trunc(pATAI - 0.5);
end;
end;



[10208] Re:四捨五入について返信 削除
2016/7/22 (金) 08:30:47 おかぽん
▼ Mr.XRAYさん
> [四捨五入について]
> https://forums.embarcadero.com/thread.jspa?threadID=227533&tstart=0

デバッグ上の式評価では 565.5 ですが、計算によって得られた値のため、
565.49999999998.. みたいな値であると予想

RoundActでブレークして、監視式にpATAIを追加。
監視式プロパティのデフォルトから浮動小数点演算に変更。

ホントに565.5ですか?と。

というようなレスを期待している、はらたいr・・・Mr.XRAYさんに3000点

[10209] Re2:四捨五入について返信 削除
2016/7/22 (金) 11:27:33 Mr.XRAY
▼ おかぽんさん

> というようなレスを期待している、

自分はこう確認した.というような反応があると思ったのですが.
予想が外れました.

ところで,www42.tok2.com はまだ復活していないようです.


[10210] Re3:四捨五入について返信 削除
2016/7/22 (金) 16:26:31 おかぽん
▼ Mr.XRAYさん
> 予想が外れました.
あ〜・・・すみません。

procedure TForm1.Button1Click(Sender: TObject);
var
  LValue : Double;
begin
  LValue := RoundAct(565.49999999999994);
  Memo1.Lines.Add(FloatToStr(LValue));
  LValue := RoundAct(565.49999999999995);
  Memo1.Lines.Add(FloatToStr(LValue));
end;

doubleの有効桁数16桁を超えた値で、565と566になることは確認しました。
こんなレスならば、当たりでしたでしょうか。

> ところで,www42.tok2.com はまだ復活していないようです.
そのまま消え去ってネットの海の藻屑となる・・?

[10215] Re4:四捨五入について返信 削除
2016/7/22 (金) 17:16:11 Mr.XRAY
▼ おかぽんさん

>   LValue := RoundAct(565.49999999999994);

おそらく,計算の過程でそうなっていると思います.
具体的な数値ではなく,変数に格納された値が.

>doubleの有効桁数16桁を超えた値で、565と566になることは確認しました。
>こんなレスならば、当たりでしたでしょうか。


通常は当たり前かも知れませんが,今回質問された方は,反応から判断すると
理解が難しいかも知れません.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82